c_src: update for 0.4
[nit.git] / c_src / parser._sep.c
index b9dbe75..e34f157 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;
-  void **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;
-  void **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;
-  void **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;
-  void **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[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[2] =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_State].i]) return;
-  variable[4] = variable[0];
-  ATTR_parser___State____state(variable[4]) /*State::_state*/ =  variable[1] /*state*/;
-  variable[4] = variable[0];
-  ATTR_parser___State____nodes(variable[4]) /*State::_nodes*/ =  variable[2] /*nodes*/;
-  return_label0: while(false);
-  init_table[VAL2OBJ( self)->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[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Parser].i]) return;
-  variable[3] = variable[0];
-  ATTR_parser___Parser____lexer(variable[3]) /*Parser::_lexer*/ =  variable[1] /*lexer*/;
-  variable[3] = variable[0];
-  variable[4] = NEW_Array_array___Array___init(); /*new Array[State]*/
-  ATTR_parser___Parser____stack(variable[3]) /*Parser::_stack*/ = variable[4];
-  variable[3] = variable[0];
-  variable[4] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  ATTR_parser___Parser____stack_pos(variable[3]) /*Parser::_stack_pos*/ = variable[4];
-  variable[3] = variable[0];
-  ((parser_tables___ParserTable___build_goto_table_t)CALL(variable[3],COLOR_parser_tables___ParserTable___build_goto_table))(variable[3]) /*ParserTable::build_goto_table*/;
-  variable[3] = variable[0];
-  ((parser_tables___ParserTable___build_action_table_t)CALL(variable[3],COLOR_parser_tables___ParserTable___build_action_table))(variable[3]) /*ParserTable::build_action_table*/;
-  variable[3] = variable[0];
-  ((parser___Parser___build_reduce_table_t)CALL(variable[3],COLOR_parser___Parser___build_reduce_table))(variable[3]) /*Parser::build_reduce_table*/;
-  return_label1: while(false);
-  init_table[VAL2OBJ( self)->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[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[4] = variable[0];
-  variable[4] = ((parser___Parser___state_t)CALL(variable[4],COLOR_parser___Parser___state))(variable[4]) /*Parser::state*/;
-  variable[3] = variable[4];
-  variable[5] = variable[0];
-  variable[5] = ATTR_parser_tables___ParserTable____goto_table(variable[5]) /*ParserTable::_goto_table*/;
-  variable[6] = variable[5];
-  variable[7] =  variable[1] /*index*/;
-  variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  variable[10] = variable[9];
-  if (UNTAG_Bool(variable[10])) { /* and */
-    variable[10] = variable[6];
-    variable[10] = ATTR_array___AbstractArray____length(variable[10]) /*AbstractArray::_length*/;
-    variable[10] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)<UNTAG_Int(variable[10]));
-  }
-  variable[9] = variable[10];
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-  variable[9] = variable[6];
-  variable[9] = ATTR_array___Array____items(variable[9]) /*Array::_items*/;
-  variable[9] = UNBOX_NativeArray(variable[9])[UNTAG_Int( variable[7] /*index*/)];
-  variable[8] = variable[9];
-  goto return_label3;
-  return_label3: while(false);
-  variable[5] = variable[8];
-  variable[4] = variable[5];
-  variable[5] =  TAG_Int(1);
-  variable[7] = ((array___AbstractArray___length_t)CALL( variable[4] /*table*/,COLOR_abstract_collection___Collection___length))( variable[4] /*table*/) /*AbstractArray::length*/;
-  variable[7] = TAG_Int(UNTAG_Int(variable[7])/UNTAG_Int( TAG_Int(2)));
-  variable[7] = TAG_Int(UNTAG_Int(variable[7])-UNTAG_Int( TAG_Int(1)));
-  variable[6] = variable[7];
-  while (true) { /*while*/
-    variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*low*/)<=UNTAG_Int( variable[6] /*high*/));
-    if (!UNTAG_Bool(variable[7])) break; /* while*/
-    variable[8] = TAG_Int(UNTAG_Int( variable[5] /*low*/)+UNTAG_Int( variable[6] /*high*/));
-    variable[8] = TAG_Int(UNTAG_Int(variable[8])/UNTAG_Int( TAG_Int(2)));
-    variable[7] = variable[8];
-    variable[9] = TAG_Int(UNTAG_Int( variable[7] /*middle*/)*UNTAG_Int( TAG_Int(2)));
-    variable[8] = variable[9];
-    variable[9] =  variable[4] /*table*/;
-    variable[10] =  variable[8] /*subindex*/;
-    variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    variable[13] = variable[12];
-    if (UNTAG_Bool(variable[13])) { /* and */
-      variable[13] = variable[9];
-      variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/;
-      variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)<UNTAG_Int(variable[13]));
-    }
-    variable[12] = variable[13];
-    if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-    variable[12] = variable[9];
-    variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/;
-    variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)];
-    variable[11] = variable[12];
-    goto return_label5;
-    return_label5: while(false);
-    variable[9] = variable[11];
-    variable[9] = TAG_Bool(UNTAG_Int( variable[3] /*state*/)<UNTAG_Int(variable[9]));
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[9] = TAG_Int(UNTAG_Int( variable[7] /*middle*/)-UNTAG_Int( TAG_Int(1)));
-      variable[6] = variable[9] /*high=*/;
-    } else { /*if*/
-      variable[9] =  variable[4] /*table*/;
-      variable[10] =  variable[8] /*subindex*/;
-      variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-      variable[13] = variable[12];
-      if (UNTAG_Bool(variable[13])) { /* and */
-        variable[13] = variable[9];
-        variable[13] = ATTR_array___AbstractArray____length(variable[13]) /*AbstractArray::_length*/;
-        variable[13] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)<UNTAG_Int(variable[13]));
+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 = 9;
+  fra.me.meth = LOCATE_parser___State___state;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:9 */
+  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, 9);
+  }
+  REGB0 = ATTR_parser___State____state(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+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 = 9;
+  fra.me.meth = LOCATE_parser___State___state__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9 */
+  ATTR_parser___State____state(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+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 = 12;
+  fra.me.meth = LOCATE_parser___State___nodes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:12 */
+  fra.me.REG[0] = ATTR_parser___State____nodes(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+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 = 12;
+  fra.me.meth = LOCATE_parser___State___nodes__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  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:12 */
+  ATTR_parser___State____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___State___init(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_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 = 15;
+  fra.me.meth = LOCATE_parser___State___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  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:17 */
+  ATTR_parser___State____state(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser.nit:18 */
+  ATTR_parser___State____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
+  return;
+}
+void parser___Parser___init(val_t p0, val_t p1, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_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 = 33;
+  fra.me.meth = LOCATE_parser___Parser___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  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:36 */
+  ATTR_parser___Parser____lexer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser.nit:37 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_parser___Parser____stack(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser.nit:38 */
+  REGB0 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:216 */
+  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+  /* ./parser//parser.nit:38 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser.nit:39 */
+  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;
+}
+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 = 42;
+  fra.me.meth = LOCATE_parser___Parser___go_to;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:45 */
+  REGB1 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./parser//parser.nit:46 */
+  REGB2 = TAG_Int(1);
+  /* ./parser//parser.nit:47 */
+  REGB3 = TAG_Int(0);
+  REGB3 = CALL_tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+  REGB4 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:217 */
+  REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
+  /* ./parser//parser.nit:49 */
+  while(1) {
+    /* ./../lib/standard//kernel.nit:211 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB4));
+    /* ./parser//parser.nit:49 */
+    if (UNTAG_Bool(REGB3)) {
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
+      /* ./parser//parser.nit:50 */
+      REGB5 = TAG_Int(2);
+      /* ./../lib/standard//kernel.nit:219 */
+      REGB5 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB5));
+      /* ./parser//parser.nit:51 */
+      REGB3 = TAG_Int(2);
+      /* ./../lib/standard//kernel.nit:218 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB5)*UNTAG_Int(REGB3));
+      /* ./parser//parser.nit:51 */
+      REGB6 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB6 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB6));
+      /* ./parser//parser.nit:53 */
+      REGB3 = CALL_tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB6);
+      /* ./../lib/standard//kernel.nit:212 */
+      REGB7 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
+      /* ./parser//parser.nit:54 */
+      if (UNTAG_Bool(REGB7)) {
+        /* ./parser//parser.nit:55 */
+        REGB7 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:217 */
+        REGB7 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB7));
+        /* ./parser//parser.nit:55 */
+        REGB4 = REGB7;
+      } else {
+        /* ./../lib/standard//kernel.nit:214 */
+        REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
+        /* ./parser//parser.nit:56 */
+        if (UNTAG_Bool(REGB3)) {
+          /* ./parser//parser.nit:57 */
+          REGB3 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB3));
+          /* ./parser//parser.nit:57 */
+          REGB2 = REGB3;
+        } else {
+          /* ./parser//parser.nit:59 */
+          REGB3 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB3));
+          /* ./parser//parser.nit:59 */
+          REGB3 = CALL_tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+          goto label1;
+        }
       }
-      variable[12] = variable[13];
-      if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-      variable[12] = variable[9];
-      variable[12] = ATTR_array___Array____items(variable[12]) /*Array::_items*/;
-      variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)];
-      variable[11] = variable[12];
-      goto return_label6;
-      return_label6: while(false);
-      variable[9] = variable[11];
-      variable[9] = TAG_Bool(UNTAG_Int( variable[3] /*state*/)>UNTAG_Int(variable[9]));
-      if (UNTAG_Bool(variable[9])) { /*if*/
-        variable[9] = TAG_Int(UNTAG_Int( variable[7] /*middle*/)+UNTAG_Int( TAG_Int(1)));
-        variable[5] = variable[9] /*low=*/;
-      } else { /*if*/
-        variable[9] = TAG_Int(UNTAG_Int( variable[8] /*subindex*/)+UNTAG_Int( TAG_Int(1)));
-        variable[10] =  variable[4] /*table*/;
-        variable[11] = variable[9];
-        variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-        variable[14] = variable[13];
-        if (UNTAG_Bool(variable[14])) { /* and */
-          variable[14] = variable[10];
-          variable[14] = ATTR_array___AbstractArray____length(variable[14]) /*AbstractArray::_length*/;
-          variable[14] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[14]));
+    } else {
+      /* ./parser//parser.nit:49 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* ./parser//parser.nit:63 */
+  REGB2 = TAG_Int(2);
+  REGB2 = CALL_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;
+}
+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 = 66;
+  fra.me.meth = LOCATE_parser___Parser___push;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  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:69 */
+  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, 69);
+  }
+  REGB1 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  REGB2 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:215 */
+  REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+  /* ./parser//parser.nit:70 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB2;
+  /* ./parser//parser.nit:71 */
+  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, 71);
+  }
+  fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+  /* ./parser//parser.nit:71 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ./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:245 */
+    REGB1 = TAG_Int(0);
+    /* ./../lib/standard//kernel.nit:213 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:245 */
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
+      }
+      REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+      /* ./../lib/standard//kernel.nit:212 */
+      REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+    } else {
+      /* ./../lib/standard//collection//array.nit:245 */
+      REGB3 = TAG_Bool(false);
+      REGB1 = REGB3;
+    }
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Assert %s  failed", "'index'", LOCATE_array, 245);
+    }
+    /* ./../lib/standard//collection//array.nit:246 */
+    fra.me.REG[2] = ATTR_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_array, 246);
+    }
+    /* ./../lib/standard//collection//array.nit:654 */
+    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+    /* ./../lib/standard//collection//array.nit:246 */
+    goto label1;
+    label1: while(0);
+    /* ./parser//parser.nit:73 */
+    CALL_parser___State___state__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
+    /* ./parser//parser.nit:74 */
+    CALL_parser___State___nodes__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  } else {
+    /* ./parser//parser.nit:76 */
+    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, 76);
+    }
+    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_abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+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 = 80;
+  fra.me.meth = LOCATE_parser___Parser___state;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:83 */
+  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, 83);
+  }
+  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, 83);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:245 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:245 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
+    }
+    REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ./../lib/standard//collection//array.nit:245 */
+    REGB2 = TAG_Bool(false);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert %s  failed", "'index'", LOCATE_array, 245);
+  }
+  /* ./../lib/standard//collection//array.nit:246 */
+  fra.me.REG[1] = ATTR_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_array, 246);
+  }
+  /* ./../lib/standard//collection//array.nit:654 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+  /* ./../lib/standard//collection//array.nit:246 */
+  goto label1;
+  label1: while(0);
+  /* ./parser//parser.nit:83 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser, 83);
+  }
+  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;
+}
+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 = 86;
+  fra.me.meth = LOCATE_parser___Parser___pop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:89 */
+  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, 89);
+  }
+  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, 89);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:245 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:245 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
+    }
+    REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ./../lib/standard//collection//array.nit:245 */
+    REGB2 = TAG_Bool(false);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert %s  failed", "'index'", LOCATE_array, 245);
+  }
+  /* ./../lib/standard//collection//array.nit:246 */
+  fra.me.REG[1] = ATTR_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_array, 246);
+  }
+  /* ./../lib/standard//collection//array.nit:654 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+  /* ./../lib/standard//collection//array.nit:246 */
+  goto label1;
+  label1: while(0);
+  /* ./parser//parser.nit:89 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser, 89);
+  }
+  fra.me.REG[1] = CALL_parser___State___nodes(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:90 */
+  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]);
+  REGB1 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:217 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* ./parser//parser.nit:90 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB1;
+  /* ./parser//parser.nit:91 */
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+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 tmp;
+            static val_t once_value_4; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 94;
+  fra.me.meth = LOCATE_parser___Parser___parse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:97 */
+  REGB0 = TAG_Int(0);
+  CALL_parser___Parser___push(fra.me.REG[0])(fra.me.REG[0], REGB0, NIT_NULL);
+  /* ./parser//parser.nit:99 */
+  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, 99);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____lexer(fra.me.REG[0]);
+  /* ./parser//parser.nit:100 */
+  while(1) {
+    /* ./parser//parser.nit:101 */
+    fra.me.REG[2] = CALL_lexer___Lexer___peek(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./parser//parser.nit:102 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_AError, ID_AError)) /*cast AError*/;
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser.nit:103 */
+      fra.me.REG[3] = NEW_Start_parser_prod___Start___init(NIT_NULL, fra.me.REG[2]);
+      goto label1;
+    }
+    /* ./parser//parser.nit:106 */
+    REGB0 = CALL_lexer___Token___parser_index(fra.me.REG[2])(fra.me.REG[2]);
+    /* ./parser//parser.nit:107 */
+    REGB1 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+    REGB2 = TAG_Int(2);
+    REGB2 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB2);
+    /* ./parser//parser.nit:108 */
+    REGB1 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+    REGB3 = TAG_Int(3);
+    REGB3 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB3);
+    /* ./parser//parser.nit:110 */
+    REGB1 = TAG_Int(1);
+    /* ./parser//parser.nit:111 */
+    REGB4 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+    REGB5 = TAG_Int(0);
+    REGB5 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB4, REGB5);
+    REGB4 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:217 */
+    REGB4 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB4));
+    /* ./parser//parser.nit:113 */
+    while(1) {
+      /* ./../lib/standard//kernel.nit:211 */
+      REGB5 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB4));
+      /* ./parser//parser.nit:113 */
+      if (UNTAG_Bool(REGB5)) {
+        /* ./../lib/standard//kernel.nit:215 */
+        REGB5 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
+        /* ./parser//parser.nit:114 */
+        REGB6 = TAG_Int(2);
+        /* ./../lib/standard//kernel.nit:219 */
+        REGB6 = TAG_Int(UNTAG_Int(REGB5)/UNTAG_Int(REGB6));
+        /* ./parser//parser.nit:115 */
+        REGB5 = TAG_Int(3);
+        /* ./../lib/standard//kernel.nit:218 */
+        REGB5 = TAG_Int(UNTAG_Int(REGB6)*UNTAG_Int(REGB5));
+        /* ./parser//parser.nit:115 */
+        REGB7 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:215 */
+        REGB7 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB7));
+        /* ./parser//parser.nit:117 */
+        REGB5 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+        REGB5 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB5, REGB7);
+        /* ./../lib/standard//kernel.nit:212 */
+        REGB8 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB5));
+        /* ./parser//parser.nit:118 */
+        if (UNTAG_Bool(REGB8)) {
+          /* ./parser//parser.nit:119 */
+          REGB8 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:217 */
+          REGB8 = TAG_Int(UNTAG_Int(REGB6)-UNTAG_Int(REGB8));
+          /* ./parser//parser.nit:119 */
+          REGB4 = REGB8;
+        } else {
+          /* ./../lib/standard//kernel.nit:214 */
+          REGB5 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB5));
+          /* ./parser//parser.nit:120 */
+          if (UNTAG_Bool(REGB5)) {
+            /* ./parser//parser.nit:121 */
+            REGB5 = TAG_Int(1);
+            /* ./../lib/standard//kernel.nit:215 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB5));
+            /* ./parser//parser.nit:121 */
+            REGB1 = REGB5;
+          } else {
+            /* ./parser//parser.nit:123 */
+            REGB5 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+            REGB6 = TAG_Int(1);
+            /* ./../lib/standard//kernel.nit:215 */
+            REGB6 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB6));
+            /* ./parser//parser.nit:123 */
+            REGB6 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB5, REGB6);
+            REGB2 = REGB6;
+            /* ./parser//parser.nit:124 */
+            REGB6 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+            REGB5 = TAG_Int(2);
+            /* ./../lib/standard//kernel.nit:215 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB5));
+            /* ./parser//parser.nit:124 */
+            REGB5 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB6, REGB5);
+            REGB3 = REGB5;
+            /* ./parser//parser.nit:125 */
+            goto label2;
+          }
         }
-        variable[13] = variable[14];
-        if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-        variable[13] = variable[10];
-        variable[13] = ATTR_array___Array____items(variable[13]) /*Array::_items*/;
-        variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
-        variable[12] = variable[13];
-        goto return_label7;
-        return_label7: while(false);
-        variable[9] = variable[12];
-        variable[2] = variable[9];
-        goto return_label2;
+      } else {
+        /* ./parser//parser.nit:113 */
+        goto label2;
       }
     }
-    continue_4: while(0);
-  }
-  break_4: while(0);
-  variable[7] =  variable[4] /*table*/;
-  variable[8] =  TAG_Int(1);
-  variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  variable[11] = variable[10];
-  if (UNTAG_Bool(variable[11])) { /* and */
-    variable[11] = variable[7];
-    variable[11] = ATTR_array___AbstractArray____length(variable[11]) /*AbstractArray::_length*/;
-    variable[11] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[11]));
-  }
-  variable[10] = variable[11];
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-  variable[10] = variable[7];
-  variable[10] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
-  variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
-  variable[9] = variable[10];
-  goto return_label8;
-  return_label8: while(false);
-  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[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[2] =  param1;
-  variable[5] = variable[0];
-  variable[5] = ATTR_parser___Parser____stack_pos(variable[5]) /*Parser::_stack_pos*/;
-  variable[5] = TAG_Int(UNTAG_Int(variable[5])+UNTAG_Int( TAG_Int(1)));
-  variable[4] = variable[5];
-  variable[5] = variable[0];
-  ATTR_parser___Parser____stack_pos(variable[5]) /*Parser::_stack_pos*/ =  variable[4] /*pos*/;
-  variable[5] = variable[0];
-  variable[5] = ATTR_parser___Parser____stack(variable[5]) /*Parser::_stack*/;
-  variable[5] = ((array___AbstractArray___length_t)CALL(variable[5],COLOR_abstract_collection___Collection___length))(variable[5]) /*AbstractArray::length*/;
-  variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*pos*/)<UNTAG_Int(variable[5]));
-  if (UNTAG_Bool(variable[5])) { /*if*/
-    variable[6] = variable[0];
-    variable[6] = ATTR_parser___Parser____stack(variable[6]) /*Parser::_stack*/;
-    variable[7] = variable[6];
-    variable[8] =  variable[4] /*pos*/;
-    variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    variable[11] = variable[10];
-    if (UNTAG_Bool(variable[11])) { /* and */
-      variable[11] = variable[7];
-      variable[11] = ATTR_array___AbstractArray____length(variable[11]) /*AbstractArray::_length*/;
-      variable[11] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[11]));
-    }
-    variable[10] = variable[11];
-    if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-    variable[10] = variable[7];
-    variable[10] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
-    variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
-    variable[9] = variable[10];
-    goto return_label10;
-    return_label10: while(false);
-    variable[6] = variable[9];
-    variable[5] = variable[6];
-    ((parser___State___state__eq_t)CALL( variable[5] /*state*/,COLOR_parser___State___state__eq))( variable[5] /*state*/,  variable[1] /*numstate*/) /*State::state=*/;
-    ((parser___State___nodes__eq_t)CALL( variable[5] /*state*/,COLOR_parser___State___nodes__eq))( variable[5] /*state*/,  variable[2] /*list_node*/) /*State::nodes=*/;
-  } else { /*if*/
-    variable[5] = variable[0];
-    variable[5] = ATTR_parser___Parser____stack(variable[5]) /*Parser::_stack*/;
-    variable[6] = NEW_State_parser___State___init( variable[1] /*numstate*/,  variable[2] /*list_node*/); /*new State*/
-    ((array___AbstractArray___push_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___push))(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[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  variable[2] = ATTR_parser___Parser____stack(variable[2]) /*Parser::_stack*/;
-  variable[3] = variable[0];
-  variable[3] = ATTR_parser___Parser____stack_pos(variable[3]) /*Parser::_stack_pos*/;
-  variable[4] = variable[2];
-  variable[5] = variable[3];
-  variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  variable[8] = variable[7];
-  if (UNTAG_Bool(variable[8])) { /* and */
-    variable[8] = variable[4];
-    variable[8] = ATTR_array___AbstractArray____length(variable[8]) /*AbstractArray::_length*/;
-    variable[8] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)<UNTAG_Int(variable[8]));
-  }
-  variable[7] = variable[8];
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-  variable[7] = variable[4];
-  variable[7] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
-  variable[7] = UNBOX_NativeArray(variable[7])[UNTAG_Int( variable[5] /*index*/)];
-  variable[6] = variable[7];
-  goto return_label12;
-  return_label12: while(false);
-  variable[2] = variable[6];
-  variable[2] = ((parser___State___state_t)CALL(variable[2],COLOR_parser___State___state))(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[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[3] = variable[0];
-  variable[3] = ATTR_parser___Parser____stack(variable[3]) /*Parser::_stack*/;
-  variable[4] = variable[0];
-  variable[4] = ATTR_parser___Parser____stack_pos(variable[4]) /*Parser::_stack_pos*/;
-  variable[5] = variable[3];
-  variable[6] = variable[4];
-  variable[8] = TAG_Bool(UNTAG_Int( variable[6] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  variable[9] = variable[8];
-  if (UNTAG_Bool(variable[9])) { /* and */
-    variable[9] = variable[5];
-    variable[9] = ATTR_array___AbstractArray____length(variable[9]) /*AbstractArray::_length*/;
-    variable[9] = TAG_Bool(UNTAG_Int( variable[6] /*index*/)<UNTAG_Int(variable[9]));
-  }
-  variable[8] = variable[9];
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-  variable[8] = variable[5];
-  variable[8] = ATTR_array___Array____items(variable[8]) /*Array::_items*/;
-  variable[8] = UNBOX_NativeArray(variable[8])[UNTAG_Int( variable[6] /*index*/)];
-  variable[7] = variable[8];
-  goto return_label14;
-  return_label14: while(false);
-  variable[3] = variable[7];
-  variable[3] = ((parser___State___nodes_t)CALL(variable[3],COLOR_parser___State___nodes))(variable[3]) /*State::nodes*/;
-  variable[2] = variable[3];
-  variable[3] = variable[0];
-  variable[4] = variable[0];
-  variable[4] = ATTR_parser___Parser____stack_pos(variable[4]) /*Parser::_stack_pos*/;
-  variable[4] = TAG_Int(UNTAG_Int(variable[4])-UNTAG_Int( TAG_Int(1)));
-  ATTR_parser___Parser____stack_pos(variable[3]) /*Parser::_stack_pos*/ = variable[4];
-  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[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  ((parser___Parser___push_t)CALL(variable[2],COLOR_parser___Parser___push))(variable[2],  TAG_Int(0),  NIT_NULL /*null*/) /*Parser::push*/;
-  variable[2] =  NIT_NULL /*null*/;
-  variable[4] = variable[0];
-  variable[4] = ATTR_parser___Parser____lexer(variable[4]) /*Parser::_lexer*/;
-  variable[3] = variable[4];
-  while (true) { /*while*/
-    if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    variable[5] = ((lexer___Lexer___peek_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___peek))( variable[3] /*lexer*/) /*Lexer::peek*/;
-    variable[4] = variable[5];
-    variable[6] = ((lexer___Token___pos_t)CALL( variable[4] /*token*/,COLOR_lexer___Token___pos))( variable[4] /*token*/) /*Token::pos*/;
-    variable[5] = variable[6];
-    variable[7] = ((lexer___Token___line_t)CALL( variable[4] /*token*/,COLOR_lexer___Token___line))( variable[4] /*token*/) /*Token::line*/;
-    variable[6] = variable[7];
-    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*/
-      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);}
-      variable[7] = NEW_Start_parser_prod___Start___init( NIT_NULL /*null*/,  variable[4] /*token*/); /*new Start*/
-      variable[1] = variable[7];
-      goto return_label15;
-    }
-    variable[8] = ((lexer___Token___parser_index_t)CALL( variable[4] /*token*/,COLOR_lexer___Token___parser_index))( variable[4] /*token*/) /*Token::parser_index*/;
-    variable[7] = variable[8];
-    variable[9] = variable[0];
-    variable[9] = ATTR_parser_tables___ParserTable____action_table(variable[9]) /*ParserTable::_action_table*/;
-    variable[10] = variable[0];
-    variable[10] = ((parser___Parser___state_t)CALL(variable[10],COLOR_parser___Parser___state))(variable[10]) /*Parser::state*/;
-    variable[11] = variable[9];
-    variable[12] = variable[10];
-    variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    variable[15] = variable[14];
-    if (UNTAG_Bool(variable[15])) { /* and */
-      variable[15] = variable[11];
-      variable[15] = ATTR_array___AbstractArray____length(variable[15]) /*AbstractArray::_length*/;
-      variable[15] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)<UNTAG_Int(variable[15]));
-    }
-    variable[14] = variable[15];
-    if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-    variable[14] = variable[11];
-    variable[14] = ATTR_array___Array____items(variable[14]) /*Array::_items*/;
-    variable[14] = UNBOX_NativeArray(variable[14])[UNTAG_Int( variable[12] /*index*/)];
-    variable[13] = variable[14];
-    goto return_label17;
-    return_label17: while(false);
-    variable[9] = variable[13];
-    variable[8] = variable[9];
-    variable[10] =  variable[8] /*table*/;
-    variable[11] =  TAG_Int(1);
-    variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    variable[14] = variable[13];
-    if (UNTAG_Bool(variable[14])) { /* and */
-      variable[14] = variable[10];
-      variable[14] = ATTR_array___AbstractArray____length(variable[14]) /*AbstractArray::_length*/;
-      variable[14] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[14]));
-    }
-    variable[13] = variable[14];
-    if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-    variable[13] = variable[10];
-    variable[13] = ATTR_array___Array____items(variable[13]) /*Array::_items*/;
-    variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
-    variable[12] = variable[13];
-    goto return_label18;
-    return_label18: while(false);
-    variable[10] = variable[12];
-    variable[9] = variable[10];
-    variable[11] =  variable[8] /*table*/;
-    variable[12] =  TAG_Int(2);
-    variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    variable[15] = variable[14];
-    if (UNTAG_Bool(variable[15])) { /* and */
-      variable[15] = variable[11];
-      variable[15] = ATTR_array___AbstractArray____length(variable[15]) /*AbstractArray::_length*/;
-      variable[15] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)<UNTAG_Int(variable[15]));
-    }
-    variable[14] = variable[15];
-    if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-    variable[14] = variable[11];
-    variable[14] = ATTR_array___Array____items(variable[14]) /*Array::_items*/;
-    variable[14] = UNBOX_NativeArray(variable[14])[UNTAG_Int( variable[12] /*index*/)];
-    variable[13] = variable[14];
-    goto return_label19;
-    return_label19: while(false);
-    variable[11] = variable[13];
-    variable[10] = variable[11];
-    variable[11] =  TAG_Int(1);
-    variable[13] = ((array___AbstractArray___length_t)CALL( variable[8] /*table*/,COLOR_abstract_collection___Collection___length))( variable[8] /*table*/) /*AbstractArray::length*/;
-    variable[13] = TAG_Int(UNTAG_Int(variable[13])/UNTAG_Int( TAG_Int(3)));
-    variable[13] = TAG_Int(UNTAG_Int(variable[13])-UNTAG_Int( TAG_Int(1)));
-    variable[12] = variable[13];
-    while (true) { /*while*/
-      variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*low*/)<=UNTAG_Int( variable[12] /*high*/));
-      if (!UNTAG_Bool(variable[13])) break; /* while*/
-      variable[14] = TAG_Int(UNTAG_Int( variable[11] /*low*/)+UNTAG_Int( variable[12] /*high*/));
-      variable[14] = TAG_Int(UNTAG_Int(variable[14])/UNTAG_Int( TAG_Int(2)));
-      variable[13] = variable[14];
-      variable[15] = TAG_Int(UNTAG_Int( variable[13] /*middle*/)*UNTAG_Int( TAG_Int(3)));
-      variable[14] = variable[15];
-      variable[15] =  variable[8] /*table*/;
-      variable[16] =  variable[14] /*subindex*/;
-      variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-      variable[19] = variable[18];
-      if (UNTAG_Bool(variable[19])) { /* and */
-        variable[19] = variable[15];
-        variable[19] = ATTR_array___AbstractArray____length(variable[19]) /*AbstractArray::_length*/;
-        variable[19] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)<UNTAG_Int(variable[19]));
+    label2: while(0);
+    /* ./parser//parser.nit:129 */
+    REGB1 = TAG_Int(0);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      /* ./../lib/standard//kernel.nit:207 */
+      REGB1 = TAG_Bool((REGB2)==(REGB1));
+      /* ./parser//parser.nit:129 */
+      REGB0 = REGB1;
+    }
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser.nit:130 */
+      fra.me.REG[4] = CALL_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:131 */
+      REGB0 = TAG_Int(1);
+      REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        /* ./../lib/standard//kernel.nit:207 */
+        REGB0 = TAG_Bool((REGB2)==(REGB0));
+        /* ./parser//parser.nit:131 */
+        REGB1 = REGB0;
       }
-      variable[18] = variable[19];
-      if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-      variable[18] = variable[15];
-      variable[18] = ATTR_array___Array____items(variable[18]) /*Array::_items*/;
-      variable[18] = UNBOX_NativeArray(variable[18])[UNTAG_Int( variable[16] /*index*/)];
-      variable[17] = variable[18];
-      goto return_label21;
-      return_label21: while(false);
-      variable[15] = variable[17];
-      variable[15] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)<UNTAG_Int(variable[15]));
-      if (UNTAG_Bool(variable[15])) { /*if*/
-        variable[15] = TAG_Int(UNTAG_Int( variable[13] /*middle*/)-UNTAG_Int( TAG_Int(1)));
-        variable[12] = variable[15] /*high=*/;
-      } else { /*if*/
-        variable[15] =  variable[8] /*table*/;
-        variable[16] =  variable[14] /*subindex*/;
-        variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-        variable[19] = variable[18];
-        if (UNTAG_Bool(variable[19])) { /* and */
-          variable[19] = variable[15];
-          variable[19] = ATTR_array___AbstractArray____length(variable[19]) /*AbstractArray::_length*/;
-          variable[19] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)<UNTAG_Int(variable[19]));
+      if (UNTAG_Bool(REGB1)) {
+        /* ./parser//parser.nit:132 */
+        REGB1 = TAG_Bool(ATTR_parser___Parser____reduce_table(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_parser, 132);
+        }
+        fra.me.REG[4] = ATTR_parser___Parser____reduce_table(fra.me.REG[0]);
+        /* ./../lib/standard//collection//array.nit:245 */
+        REGB1 = TAG_Int(0);
+        /* ./../lib/standard//kernel.nit:213 */
+        REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
+        /* ./../lib/standard//collection//array.nit:245 */
+        if (UNTAG_Bool(REGB1)) {
+          REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
+          }
+          REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+          /* ./../lib/standard//kernel.nit:212 */
+          REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
+        } else {
+          /* ./../lib/standard//collection//array.nit:245 */
+          REGB0 = TAG_Bool(false);
+          REGB1 = REGB0;
+        }
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Assert %s  failed", "'index'", LOCATE_array, 245);
         }
-        variable[18] = variable[19];
-        if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-        variable[18] = variable[15];
-        variable[18] = ATTR_array___Array____items(variable[18]) /*Array::_items*/;
-        variable[18] = UNBOX_NativeArray(variable[18])[UNTAG_Int( variable[16] /*index*/)];
-        variable[17] = variable[18];
-        goto return_label22;
-        return_label22: while(false);
-        variable[15] = variable[17];
-        variable[15] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)>UNTAG_Int(variable[15]));
-        if (UNTAG_Bool(variable[15])) { /*if*/
-          variable[15] = TAG_Int(UNTAG_Int( variable[13] /*middle*/)+UNTAG_Int( TAG_Int(1)));
-          variable[11] = variable[15] /*low=*/;
-        } else { /*if*/
-          variable[15] = TAG_Int(UNTAG_Int( variable[14] /*subindex*/)+UNTAG_Int( TAG_Int(1)));
-          variable[16] =  variable[8] /*table*/;
-          variable[17] = variable[15];
-          variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-          variable[20] = variable[19];
-          if (UNTAG_Bool(variable[20])) { /* and */
-            variable[20] = variable[16];
-            variable[20] = ATTR_array___AbstractArray____length(variable[20]) /*AbstractArray::_length*/;
-            variable[20] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)<UNTAG_Int(variable[20]));
+        /* ./../lib/standard//collection//array.nit:246 */
+        fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          nit_abort("Reciever is null", NULL, LOCATE_array, 246);
+        }
+        /* ./../lib/standard//collection//array.nit:654 */
+        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
+        /* ./../lib/standard//collection//array.nit:246 */
+        goto label3;
+        label3: while(0);
+        /* ./parser//parser.nit:132 */
+        REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 132);
+        }
+        CALL_parser___ReduceAction___action(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+      } else {
+        /* ./parser//parser.nit:133 */
+        REGB3 = TAG_Int(2);
+        REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          /* ./../lib/standard//kernel.nit:207 */
+          REGB3 = TAG_Bool((REGB2)==(REGB3));
+          /* ./parser//parser.nit:133 */
+          REGB1 = REGB3;
+        }
+        if (UNTAG_Bool(REGB1)) {
+          /* ./parser//parser.nit:134 */
+          fra.me.REG[4] = CALL_lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
+          /* ./parser//parser.nit:135 */
+          REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_EOF, ID_EOF)) /*cast EOF*/;
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser, 135);
+          }
+          /* ./parser//parser.nit:136 */
+          fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[0])(fra.me.REG[0]);
+          /* ./parser//parser.nit:137 */
+          REGB1 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_AModule, ID_AModule)) /*cast AModule*/;
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser, 137);
           }
-          variable[19] = variable[20];
-          if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-          variable[19] = variable[16];
-          variable[19] = ATTR_array___Array____items(variable[19]) /*Array::_items*/;
-          variable[19] = UNBOX_NativeArray(variable[19])[UNTAG_Int( variable[17] /*index*/)];
-          variable[18] = variable[19];
-          goto return_label23;
-          return_label23: while(false);
-          variable[15] = variable[18];
-          variable[9] = variable[15] /*action_type=*/;
-          variable[15] = TAG_Int(UNTAG_Int( variable[14] /*subindex*/)+UNTAG_Int( TAG_Int(2)));
-          variable[16] =  variable[8] /*table*/;
-          variable[17] = variable[15];
-          variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-          variable[20] = variable[19];
-          if (UNTAG_Bool(variable[20])) { /* and */
-            variable[20] = variable[16];
-            variable[20] = ATTR_array___AbstractArray____length(variable[20]) /*AbstractArray::_length*/;
-            variable[20] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)<UNTAG_Int(variable[20]));
+          /* ./parser//parser.nit:138 */
+          fra.me.REG[4] = NEW_Start_parser_prod___Start___init(fra.me.REG[5], fra.me.REG[4]);
+          /* ./parser//parser.nit:139 */
+          fra.me.REG[5] = NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init();
+          CALL_parser_prod___Visitor___enter_visit(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+          /* ./parser//parser.nit:140 */
+          fra.me.REG[3] = fra.me.REG[4];
+          goto label1;
+        } else {
+          /* ./parser//parser.nit:141 */
+          REGB1 = TAG_Int(3);
+          REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            /* ./../lib/standard//kernel.nit:207 */
+            REGB1 = TAG_Bool((REGB2)==(REGB1));
+            /* ./parser//parser.nit:141 */
+            REGB3 = REGB1;
+          }
+          if (UNTAG_Bool(REGB3)) {
+            /* ./parser//parser.nit:142 */
+            if (!once_value_4) {
+              fra.me.REG[4] = BOX_NativeString("Syntax error: unexpected token.");
+              REGB3 = TAG_Int(31);
+              fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB3);
+              once_value_4 = fra.me.REG[4];
+              register_static_object(&once_value_4);
+            } else fra.me.REG[4] = once_value_4;
+            fra.me.REG[4] = fra.me.REG[4];
+            fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
+            fra.me.REG[2] = NEW_AError_lexer___AError___init_error(fra.me.REG[4], fra.me.REG[2]);
+            /* ./parser//parser.nit:143 */
+            fra.me.REG[2] = NEW_Start_parser_prod___Start___init(NIT_NULL, fra.me.REG[2]);
+            /* ./parser//parser.nit:144 */
+            fra.me.REG[3] = fra.me.REG[2];
+            goto label1;
           }
-          variable[19] = variable[20];
-          if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-          variable[19] = variable[16];
-          variable[19] = ATTR_array___Array____items(variable[19]) /*Array::_items*/;
-          variable[19] = UNBOX_NativeArray(variable[19])[UNTAG_Int( variable[17] /*index*/)];
-          variable[18] = variable[19];
-          goto return_label24;
-          return_label24: while(false);
-          variable[15] = variable[18];
-          variable[10] = variable[15] /*action_value=*/;
-          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);
-    variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(0)));
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[13] = variable[0];
-      variable[14] = ((lexer___Lexer___next_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___next))( variable[3] /*lexer*/) /*Lexer::next*/;
-      ((parser___Parser___push_t)CALL(variable[13],COLOR_parser___Parser___push))(variable[13],  variable[10] /*action_value*/, variable[14]) /*Parser::push*/;
-    } else { /*if*/
-      variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(1)));
-      if (UNTAG_Bool(variable[13])) { /*if*/
-        variable[13] = variable[0];
-        variable[13] = ATTR_parser___Parser____reduce_table(variable[13]) /*Parser::_reduce_table*/;
-        variable[14] = variable[13];
-        variable[15] =  variable[10] /*action_value*/;
-        variable[17] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-        variable[18] = variable[17];
-        if (UNTAG_Bool(variable[18])) { /* and */
-          variable[18] = variable[14];
-          variable[18] = ATTR_array___AbstractArray____length(variable[18]) /*AbstractArray::_length*/;
-          variable[18] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)<UNTAG_Int(variable[18]));
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+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 = 150;
+  fra.me.meth = LOCATE_parser___Parser___build_reduce_table;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  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:152 */
+  REGB0 = TAG_Int(692);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  /* ./parser//parser.nit:153 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction0_parser___ReduceAction0___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:154 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction1_parser___ReduceAction1___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:155 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction2_parser___ReduceAction2___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction3_parser___ReduceAction3___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction4_parser___ReduceAction4___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction5_parser___ReduceAction5___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction6_parser___ReduceAction6___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction7_parser___ReduceAction7___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction8_parser___ReduceAction8___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction9_parser___ReduceAction9___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction10_parser___ReduceAction10___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction11_parser___ReduceAction11___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction12_parser___ReduceAction12___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction13_parser___ReduceAction13___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction14_parser___ReduceAction14___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction15_parser___ReduceAction15___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction16_parser___ReduceAction16___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction17_parser___ReduceAction17___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction18_parser___ReduceAction18___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction19_parser___ReduceAction19___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction20_parser___ReduceAction20___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction21_parser___ReduceAction21___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction22_parser___ReduceAction22___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction23_parser___ReduceAction23___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction24_parser___ReduceAction24___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction25_parser___ReduceAction25___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction26_parser___ReduceAction26___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction27_parser___ReduceAction27___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction28_parser___ReduceAction28___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction29_parser___ReduceAction29___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction30_parser___ReduceAction30___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction31_parser___ReduceAction31___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:185 */
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_ReduceAction32_parser___ReduceAction32___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:186 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction33_parser___ReduceAction33___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:187 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction34_parser___ReduceAction34___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:188 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_ReduceAction35_parser___ReduceAction35___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:189 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction36___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:190 */
+  REGB0 = TAG_Int(4);
+  fra.me.REG[2] = NEW_ReduceAction37_parser___ReduceAction37___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:191 */
+  REGB0 = TAG_Int(4);
+  fra.me.REG[2] = NEW_ReduceAction37_parser___ReduceAction37___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:192 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction39_parser___ReduceAction39___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:193 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction40_parser___ReduceAction40___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:194 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction41_parser___ReduceAction41___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:195 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction42_parser___ReduceAction42___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:196 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction43_parser___ReduceAction43___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:197 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction44_parser___ReduceAction44___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:198 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction45_parser___ReduceAction45___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:199 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction46_parser___ReduceAction46___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:200 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction47_parser___ReduceAction47___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:201 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction48_parser___ReduceAction48___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:202 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction49_parser___ReduceAction49___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:203 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction50_parser___ReduceAction50___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:204 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction51_parser___ReduceAction51___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:205 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction52_parser___ReduceAction52___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:206 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction53_parser___ReduceAction53___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:207 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction54_parser___ReduceAction54___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:208 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction55_parser___ReduceAction55___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:209 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction56_parser___ReduceAction56___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:210 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction57_parser___ReduceAction57___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:211 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction58_parser___ReduceAction58___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:212 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[2] = NEW_ReduceAction59_parser___ReduceAction59___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:213 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[2] = NEW_ReduceAction60_parser___ReduceAction60___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:214 */
+  REGB0 = TAG_Int(8);
+  fra.me.REG[2] = NEW_ReduceAction61_parser___ReduceAction61___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:215 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction62_parser___ReduceAction62___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:216 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction63_parser___ReduceAction63___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:217 */
+  REGB0 = TAG_Int(10);
+  fra.me.REG[2] = NEW_ReduceAction64_parser___ReduceAction64___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:218 */
+  REGB0 = TAG_Int(10);
+  fra.me.REG[2] = NEW_ReduceAction65_parser___ReduceAction65___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:219 */
+  REGB0 = TAG_Int(11);
+  fra.me.REG[2] = NEW_ReduceAction66_parser___ReduceAction66___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:220 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction67_parser___ReduceAction67___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:221 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction68___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:222 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction69___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:223 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction70_parser___ReduceAction70___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:224 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction71___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:225 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction72_parser___ReduceAction72___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:226 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction73_parser___ReduceAction73___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:227 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction74_parser___ReduceAction74___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:228 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction75_parser___ReduceAction75___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:229 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction76_parser___ReduceAction76___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:230 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction77_parser___ReduceAction77___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:231 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction78_parser___ReduceAction78___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:232 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction79_parser___ReduceAction79___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:233 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction80_parser___ReduceAction80___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:234 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction81_parser___ReduceAction81___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:235 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction82_parser___ReduceAction82___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:236 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction83_parser___ReduceAction83___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:237 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction84_parser___ReduceAction84___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:238 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction85_parser___ReduceAction85___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:239 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction86_parser___ReduceAction86___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:240 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction87_parser___ReduceAction87___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:241 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction88_parser___ReduceAction88___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:242 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction89_parser___ReduceAction89___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:243 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction90_parser___ReduceAction90___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:244 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction91_parser___ReduceAction91___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:245 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction92_parser___ReduceAction92___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:246 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction93_parser___ReduceAction93___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:247 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction94_parser___ReduceAction94___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:248 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction95_parser___ReduceAction95___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:249 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction96_parser___ReduceAction96___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:250 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction97_parser___ReduceAction97___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:251 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction98_parser___ReduceAction98___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:252 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction99_parser___ReduceAction99___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:253 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction100_parser___ReduceAction100___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:254 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction101_parser___ReduceAction101___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:255 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction102_parser___ReduceAction102___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:256 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction103_parser___ReduceAction103___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:257 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction104_parser___ReduceAction104___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:258 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction105_parser___ReduceAction105___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:259 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction106_parser___ReduceAction106___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:260 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction107_parser___ReduceAction107___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:261 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction108_parser___ReduceAction108___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:262 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction109_parser___ReduceAction109___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:263 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction110_parser___ReduceAction110___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:264 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction111_parser___ReduceAction111___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:265 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction112_parser___ReduceAction112___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:266 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction113_parser___ReduceAction113___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:267 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction114_parser___ReduceAction114___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:268 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction115_parser___ReduceAction115___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:269 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction116_parser___ReduceAction116___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:270 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction117_parser___ReduceAction117___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction118_parser___ReduceAction118___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction119_parser___ReduceAction119___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction120_parser___ReduceAction120___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction121_parser___ReduceAction121___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction122_parser___ReduceAction122___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction123_parser___ReduceAction123___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction124_parser___ReduceAction124___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction125_parser___ReduceAction125___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction126_parser___ReduceAction126___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction127_parser___ReduceAction127___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction128_parser___ReduceAction128___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction129_parser___ReduceAction129___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction130_parser___ReduceAction130___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction131_parser___ReduceAction131___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction132_parser___ReduceAction132___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction133_parser___ReduceAction133___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction134_parser___ReduceAction134___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction135_parser___ReduceAction135___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction136_parser___ReduceAction136___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction137_parser___ReduceAction137___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_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_ReduceAction138_parser___ReduceAction138___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:292 */
+  REGB0 = TAG_Int(13);
+  fra.me.REG[2] = NEW_ReduceAction139_parser___ReduceAction139___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:293 */
+  REGB0 = TAG_Int(13);
+  fra.me.REG[2] = NEW_ReduceAction140_parser___ReduceAction140___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:294 */
+  REGB0 = TAG_Int(14);
+  fra.me.REG[2] = NEW_ReduceAction141_parser___ReduceAction141___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:295 */
+  REGB0 = TAG_Int(14);
+  fra.me.REG[2] = NEW_ReduceAction142_parser___ReduceAction142___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:296 */
+  REGB0 = TAG_Int(15);
+  fra.me.REG[2] = NEW_ReduceAction143_parser___ReduceAction143___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:297 */
+  REGB0 = TAG_Int(15);
+  fra.me.REG[2] = NEW_ReduceAction144_parser___ReduceAction144___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:298 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction145_parser___ReduceAction145___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:299 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction146_parser___ReduceAction146___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:300 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction147_parser___ReduceAction147___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:301 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction148_parser___ReduceAction148___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:302 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction149_parser___ReduceAction149___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:303 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction150_parser___ReduceAction150___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:304 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction151_parser___ReduceAction151___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:305 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction152_parser___ReduceAction152___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:306 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction153_parser___ReduceAction153___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:307 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction154_parser___ReduceAction154___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:308 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction155_parser___ReduceAction155___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:309 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction156_parser___ReduceAction156___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:310 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction157_parser___ReduceAction157___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:311 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction158_parser___ReduceAction158___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:312 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction159_parser___ReduceAction159___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:313 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction160_parser___ReduceAction160___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:314 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction161_parser___ReduceAction161___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:315 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction162_parser___ReduceAction162___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:316 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction163_parser___ReduceAction163___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:317 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction164_parser___ReduceAction164___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:318 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction165_parser___ReduceAction165___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:319 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction166_parser___ReduceAction166___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:320 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction167_parser___ReduceAction167___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:321 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction168_parser___ReduceAction168___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:322 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction169___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:323 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction170___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:324 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction171_parser___ReduceAction171___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:325 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction172_parser___ReduceAction172___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:326 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction173_parser___ReduceAction173___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:327 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction174_parser___ReduceAction174___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:328 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction175_parser___ReduceAction175___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:329 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction176_parser___ReduceAction176___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:330 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction177_parser___ReduceAction177___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:331 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction178_parser___ReduceAction178___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:332 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction179_parser___ReduceAction179___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:333 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction180_parser___ReduceAction180___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:334 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction181___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:335 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction182_parser___ReduceAction182___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:336 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction183_parser___ReduceAction183___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:337 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction184_parser___ReduceAction184___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:338 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction185_parser___ReduceAction185___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:339 */
+  REGB0 = TAG_Int(23);
+  fra.me.REG[2] = NEW_ReduceAction186_parser___ReduceAction186___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:340 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction187_parser___ReduceAction187___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:341 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction188_parser___ReduceAction188___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:342 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction189_parser___ReduceAction189___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:343 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction190_parser___ReduceAction190___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:344 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction191_parser___ReduceAction191___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:345 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction192_parser___ReduceAction192___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:346 */
+  REGB0 = TAG_Int(25);
+  fra.me.REG[2] = NEW_ReduceAction193_parser___ReduceAction193___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:347 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction194_parser___ReduceAction194___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:348 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction195_parser___ReduceAction195___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:349 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction196_parser___ReduceAction196___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:350 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction197_parser___ReduceAction197___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:351 */
+  REGB0 = TAG_Int(27);
+  fra.me.REG[2] = NEW_ReduceAction198_parser___ReduceAction198___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:352 */
+  REGB0 = TAG_Int(27);
+  fra.me.REG[2] = NEW_ReduceAction199_parser___ReduceAction199___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:353 */
+  REGB0 = TAG_Int(28);
+  fra.me.REG[2] = NEW_ReduceAction200_parser___ReduceAction200___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:354 */
+  REGB0 = TAG_Int(29);
+  fra.me.REG[2] = NEW_ReduceAction200_parser___ReduceAction200___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:355 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:356 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:357 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:358 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:359 */
+  REGB0 = TAG_Int(31);
+  fra.me.REG[2] = NEW_ReduceAction206_parser___ReduceAction206___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:360 */
+  REGB0 = TAG_Int(31);
+  fra.me.REG[2] = NEW_ReduceAction207_parser___ReduceAction207___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:361 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction208_parser___ReduceAction208___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:362 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction209_parser___ReduceAction209___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:363 */
+  REGB0 = TAG_Int(33);
+  fra.me.REG[2] = NEW_ReduceAction210_parser___ReduceAction210___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:364 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:365 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:366 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction213_parser___ReduceAction213___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:367 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction214_parser___ReduceAction214___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:368 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction215_parser___ReduceAction215___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:369 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction216_parser___ReduceAction216___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:370 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction217_parser___ReduceAction217___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:371 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction218_parser___ReduceAction218___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:372 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction219_parser___ReduceAction219___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:373 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction220_parser___ReduceAction220___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:374 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction221_parser___ReduceAction221___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:375 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction222_parser___ReduceAction222___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:376 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction223_parser___ReduceAction223___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:377 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:378 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:379 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:380 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:381 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:382 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:383 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:384 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:385 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:386 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:387 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:388 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:389 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:390 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:391 */
+  REGB0 = TAG_Int(35);
+  fra.me.REG[2] = NEW_ReduceAction238_parser___ReduceAction238___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:392 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction239_parser___ReduceAction239___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:393 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction240_parser___ReduceAction240___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:394 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction241_parser___ReduceAction241___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:395 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction242_parser___ReduceAction242___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:396 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction243_parser___ReduceAction243___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:397 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction244_parser___ReduceAction244___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:398 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction245_parser___ReduceAction245___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:399 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction246_parser___ReduceAction246___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:400 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction247_parser___ReduceAction247___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:401 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction248_parser___ReduceAction248___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:402 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction249_parser___ReduceAction249___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:403 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction250_parser___ReduceAction250___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:404 */
+  REGB0 = TAG_Int(39);
+  fra.me.REG[2] = NEW_ReduceAction251_parser___ReduceAction251___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:405 */
+  REGB0 = TAG_Int(39);
+  fra.me.REG[2] = NEW_ReduceAction252_parser___ReduceAction252___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:406 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction253_parser___ReduceAction253___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:407 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction254_parser___ReduceAction254___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:408 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction255_parser___ReduceAction255___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:409 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction256_parser___ReduceAction256___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:410 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction257_parser___ReduceAction257___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:411 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction258_parser___ReduceAction258___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:412 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction259_parser___ReduceAction259___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:413 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction260_parser___ReduceAction260___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:414 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction261_parser___ReduceAction261___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:415 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction262_parser___ReduceAction262___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:416 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction263_parser___ReduceAction263___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:417 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction264_parser___ReduceAction264___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:418 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction265_parser___ReduceAction265___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:419 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction266_parser___ReduceAction266___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:420 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction267_parser___ReduceAction267___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:421 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction268_parser___ReduceAction268___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:422 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction269_parser___ReduceAction269___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:423 */
+  REGB0 = TAG_Int(44);
+  fra.me.REG[2] = NEW_ReduceAction270_parser___ReduceAction270___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:424 */
+  REGB0 = TAG_Int(44);
+  fra.me.REG[2] = NEW_ReduceAction271_parser___ReduceAction271___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:425 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction272_parser___ReduceAction272___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:426 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction273_parser___ReduceAction273___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:427 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction274_parser___ReduceAction274___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:428 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction275_parser___ReduceAction275___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:429 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction276_parser___ReduceAction276___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:430 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction210_parser___ReduceAction210___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:431 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction36___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:432 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction279_parser___ReduceAction279___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:433 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction280___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:434 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction281___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:435 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction282___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:436 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction283___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:437 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction284_parser___ReduceAction284___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:438 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction285_parser___ReduceAction285___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:439 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction286_parser___ReduceAction286___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:440 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction287_parser___ReduceAction287___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:441 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction288_parser___ReduceAction288___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:442 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction289_parser___ReduceAction289___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:443 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:444 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:445 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:446 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction293_parser___ReduceAction293___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:447 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:448 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:449 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:450 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:451 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:452 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:453 */
+  REGB0 = TAG_Int(55);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:454 */
+  REGB0 = TAG_Int(55);
+  fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:455 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:456 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:457 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:458 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:459 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:460 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:461 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:462 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:463 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:464 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:465 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:466 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:467 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:468 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:469 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:470 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:471 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:472 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:473 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:474 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:475 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:476 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:477 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:478 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:479 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction326___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:480 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction327___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:481 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction328___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:482 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction329___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:483 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:484 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:485 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:486 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:487 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:488 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:489 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction336___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:490 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:491 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction338___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:492 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction339___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:493 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction340_parser___ReduceAction340___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:494 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:495 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:496 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:497 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:498 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:499 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:500 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:501 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:502 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:503 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:504 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:505 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:506 */
+  REGB0 = TAG_Int(62);
+  fra.me.REG[2] = NEW_ReduceAction353_parser___ReduceAction353___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:507 */
+  REGB0 = TAG_Int(62);
+  fra.me.REG[2] = NEW_ReduceAction354_parser___ReduceAction354___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:508 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction355___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:509 */
+  REGB0 = TAG_Int(64);
+  fra.me.REG[2] = NEW_ReduceAction356_parser___ReduceAction356___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:510 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction355___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:511 */
+  REGB0 = TAG_Int(66);
+  fra.me.REG[2] = NEW_ReduceAction358_parser___ReduceAction358___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:512 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction359_parser___ReduceAction359___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:513 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction360___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:514 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction361___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:515 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction181___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:516 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction363_parser___ReduceAction363___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:517 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction360___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:518 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction361___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:519 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction366___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:520 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction181___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:521 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction363_parser___ReduceAction363___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:522 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction360___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:523 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction361___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:524 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction371___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:525 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction372___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:526 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction373___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:527 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction374___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:528 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction375_parser___ReduceAction375___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:529 */
+  REGB0 = TAG_Int(74);
+  fra.me.REG[2] = NEW_ReduceAction376_parser___ReduceAction376___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:530 */
+  REGB0 = TAG_Int(74);
+  fra.me.REG[2] = NEW_ReduceAction377_parser___ReduceAction377___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:531 */
+  REGB0 = TAG_Int(74);
+  fra.me.REG[2] = NEW_ReduceAction378_parser___ReduceAction378___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:532 */
+  REGB0 = TAG_Int(75);
+  fra.me.REG[2] = NEW_ReduceAction379_parser___ReduceAction379___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:533 */
+  REGB0 = TAG_Int(76);
+  fra.me.REG[2] = NEW_ReduceAction380_parser___ReduceAction380___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:534 */
+  REGB0 = TAG_Int(77);
+  fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction381___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:535 */
+  REGB0 = TAG_Int(77);
+  fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction381___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:536 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction383_parser___ReduceAction383___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:537 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction384_parser___ReduceAction384___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:538 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction36___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:539 */
+  REGB0 = TAG_Int(79);
+  fra.me.REG[2] = NEW_ReduceAction386_parser___ReduceAction386___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:540 */
+  REGB0 = TAG_Int(79);
+  fra.me.REG[2] = NEW_ReduceAction387_parser___ReduceAction387___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:541 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction388_parser___ReduceAction388___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:542 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction389_parser___ReduceAction389___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:543 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction381___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:544 */
+  REGB0 = TAG_Int(81);
+  fra.me.REG[2] = NEW_ReduceAction66_parser___ReduceAction66___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:545 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction67_parser___ReduceAction67___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:546 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction68___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:547 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction69___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:548 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction70_parser___ReduceAction70___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:549 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction71___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:550 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction72_parser___ReduceAction72___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:551 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction77_parser___ReduceAction77___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:552 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction78_parser___ReduceAction78___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:553 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction79_parser___ReduceAction79___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:554 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction80_parser___ReduceAction80___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:555 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction167_parser___ReduceAction167___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:556 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction168_parser___ReduceAction168___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:557 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction169___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:558 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction170___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:559 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction194_parser___ReduceAction194___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:560 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction195_parser___ReduceAction195___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:561 */
+  REGB0 = TAG_Int(85);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:562 */
+  REGB0 = TAG_Int(85);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:563 */
+  REGB0 = TAG_Int(85);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:564 */
+  REGB0 = TAG_Int(86);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:565 */
+  REGB0 = TAG_Int(86);
+  fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:566 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:567 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:568 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:569 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:570 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:571 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:572 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:573 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:574 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:575 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:576 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:577 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:578 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:579 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:580 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:581 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:582 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:583 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:584 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:585 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:586 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:587 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:588 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:589 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:590 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:591 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:592 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:593 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:594 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:595 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:596 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction326___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:597 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction327___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:598 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction328___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:599 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction329___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:600 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:601 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:602 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:603 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:604 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:605 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:606 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:607 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:608 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:609 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:610 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:611 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:612 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:613 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:614 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:615 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:616 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:617 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:618 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:619 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:620 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:621 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:622 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:623 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:624 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:625 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction213_parser___ReduceAction213___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:626 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction214_parser___ReduceAction214___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:627 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction215_parser___ReduceAction215___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:628 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction216_parser___ReduceAction216___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:629 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction217_parser___ReduceAction217___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:630 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction218_parser___ReduceAction218___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:631 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction219_parser___ReduceAction219___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:632 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction220_parser___ReduceAction220___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:633 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction221_parser___ReduceAction221___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:634 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction222_parser___ReduceAction222___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:635 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction223_parser___ReduceAction223___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:636 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:637 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:638 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:639 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:640 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:641 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:642 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:643 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:644 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:645 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:646 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:647 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:648 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:649 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:650 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction239_parser___ReduceAction239___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:651 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction240_parser___ReduceAction240___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:652 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction241_parser___ReduceAction241___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:653 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction242_parser___ReduceAction242___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:654 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction243_parser___ReduceAction243___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:655 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction244_parser___ReduceAction244___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:656 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction245_parser___ReduceAction245___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:657 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction246_parser___ReduceAction246___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:658 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction253_parser___ReduceAction253___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:659 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction254_parser___ReduceAction254___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:660 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction255_parser___ReduceAction255___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:661 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction256_parser___ReduceAction256___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:662 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction257_parser___ReduceAction257___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:663 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction258_parser___ReduceAction258___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:664 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction259_parser___ReduceAction259___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:665 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction260_parser___ReduceAction260___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:666 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction261_parser___ReduceAction261___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:667 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction262_parser___ReduceAction262___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:668 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction263_parser___ReduceAction263___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:669 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction264_parser___ReduceAction264___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:670 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction265_parser___ReduceAction265___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:671 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction266_parser___ReduceAction266___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:672 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction267_parser___ReduceAction267___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:673 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction270_parser___ReduceAction270___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:674 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction271_parser___ReduceAction271___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:675 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction272_parser___ReduceAction272___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:676 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction279_parser___ReduceAction279___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:677 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction280___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:678 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction281___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:679 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction282___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:680 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction283___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:681 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction284_parser___ReduceAction284___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:682 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction285_parser___ReduceAction285___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:683 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction286_parser___ReduceAction286___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:684 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:685 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:686 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:687 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction293_parser___ReduceAction293___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:688 */
+  REGB0 = TAG_Int(109);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:689 */
+  REGB0 = TAG_Int(109);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:690 */
+  REGB0 = TAG_Int(109);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:691 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:692 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:693 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:694 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:695 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:696 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:697 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:698 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:699 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:700 */
+  REGB0 = TAG_Int(113);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:701 */
+  REGB0 = TAG_Int(113);
+  fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:702 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:703 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:704 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:705 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:706 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:707 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:708 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:709 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:710 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:711 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:712 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:713 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:714 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:715 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:716 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:717 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:718 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:719 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:720 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:721 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:722 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:723 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:724 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:725 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:726 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:727 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:728 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:729 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:730 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:731 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:732 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction326___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:733 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction327___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:734 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction328___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:735 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction329___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:736 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:737 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:738 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:739 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:740 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:741 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:742 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction336___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:743 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:744 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:745 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:746 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:747 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:748 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:749 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:750 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:751 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:752 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:753 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:754 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:755 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:756 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:757 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:758 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:759 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:760 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:761 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:762 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:763 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:764 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:765 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:766 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:767 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:768 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:769 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:770 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:771 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:772 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:773 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:774 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:775 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:776 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:777 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:778 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:779 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:780 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:781 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:782 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:783 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:784 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:785 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:786 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:787 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:788 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:789 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:790 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction637_parser___ReduceAction637___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:791 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction638_parser___ReduceAction638___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:792 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction639_parser___ReduceAction639___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:793 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:794 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:795 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction642_parser___ReduceAction642___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:796 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:797 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:798 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:799 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:800 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:801 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:802 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:803 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:804 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:805 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:806 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:807 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:808 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction655_parser___ReduceAction655___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:809 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction656_parser___ReduceAction656___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:810 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:811 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:812 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:813 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:814 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:815 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:816 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction663_parser___ReduceAction663___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:817 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction664_parser___ReduceAction664___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:818 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction665_parser___ReduceAction665___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:819 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction666_parser___ReduceAction666___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:820 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction667_parser___ReduceAction667___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:821 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction668_parser___ReduceAction668___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:822 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction669_parser___ReduceAction669___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:823 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction670_parser___ReduceAction670___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:824 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction667_parser___ReduceAction667___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:825 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction668_parser___ReduceAction668___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:826 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction673_parser___ReduceAction673___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:827 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction674_parser___ReduceAction674___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:828 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction675_parser___ReduceAction675___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:829 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction676_parser___ReduceAction676___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:830 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction677_parser___ReduceAction677___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:831 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction678_parser___ReduceAction678___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:832 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction198_parser___ReduceAction198___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:833 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction680_parser___ReduceAction680___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:834 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction366___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:835 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction682_parser___ReduceAction682___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:836 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction373___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:837 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction684_parser___ReduceAction684___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:838 */
+  REGB0 = TAG_Int(146);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction366___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:839 */
+  REGB0 = TAG_Int(146);
+  fra.me.REG[2] = NEW_ReduceAction682_parser___ReduceAction682___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:840 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction374___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:841 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction688_parser___ReduceAction688___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:842 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction689_parser___ReduceAction689___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:843 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction690_parser___ReduceAction690___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:844 */
+  REGB0 = TAG_Int(149);
+  fra.me.REG[2] = NEW_ReduceAction691_parser___ReduceAction691___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:845 */
+  REGB0 = TAG_Int(149);
+  fra.me.REG[2] = NEW_ReduceAction692_parser___ReduceAction692___init(REGB0);
+  /* ./parser//parser.nit:152 */
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[1] = NEW_Array_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;
+}
+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 = 876;
+  fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:878 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./parser//parser.nit:879 */
+    goto label1;
+  } else {
+    /* ./parser//parser.nit:880 */
+    REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_Token, ID_Token)) /*cast Token*/;
+    if (UNTAG_Bool(REGB0)) {
+      /* ./parser//parser.nit:881 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 881);
+      }
+      fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./parser//parser.nit:882 */
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+      /* ./parser//parser.nit:885 */
+      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, 885);
+      }
+      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      /* ./../lib/standard//collection//array.nit:234 */
+      REGB0 = TAG_Int(0);
+      /* ./../lib/standard//collection//array.nit:235 */
+      REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
+      }
+      REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
+      /* ./../lib/standard//collection//array.nit:236 */
+      fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[3]);
+      /* ./../lib/standard//collection//array.nit:237 */
+      while(1) {
+        /* ./../lib/standard//collection//array.nit:23 */
+        REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+        }
+        REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
+        /* ./../lib/standard//kernel.nit:212 */
+        REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+        /* ./../lib/standard//collection//array.nit:237 */
+        if (UNTAG_Bool(REGB1)) {
+          /* ./../lib/standard//collection//array.nit:238 */
+          REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+            nit_abort("Reciever is null", NULL, LOCATE_array, 238);
+          }
+          /* ./../lib/standard//collection//array.nit:654 */
+          fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
+          /* ./parser//parser.nit:886 */
+          ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
+          /* ./../lib/standard//collection//array.nit:239 */
+          REGB1 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+          /* ./../lib/standard//collection//array.nit:239 */
+          REGB0 = REGB1;
+        } else {
+          /* ./../lib/standard//collection//array.nit:237 */
+          goto label2;
+        }
+      }
+      label2: while(0);
+      /* ./parser//parser.nit:888 */
+      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, 888);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+      /* ./parser//parser.nit:891 */
+      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, 891);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+      /* ./../lib/standard//collection//array.nit:234 */
+      REGB0 = TAG_Int(0);
+      /* ./../lib/standard//collection//array.nit:235 */
+      REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
+      }
+      REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+      /* ./../lib/standard//collection//array.nit:236 */
+      fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[4]);
+      /* ./../lib/standard//collection//array.nit:237 */
+      while(1) {
+        /* ./../lib/standard//collection//array.nit:23 */
+        REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+        }
+        REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+        /* ./../lib/standard//kernel.nit:212 */
+        REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+        /* ./../lib/standard//collection//array.nit:237 */
+        if (UNTAG_Bool(REGB1)) {
+          /* ./../lib/standard//collection//array.nit:238 */
+          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+            nit_abort("Reciever is null", NULL, LOCATE_array, 238);
+          }
+          /* ./../lib/standard//collection//array.nit:654 */
+          fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+          /* ./parser//parser.nit:894 */
+          fra.me.REG[6] = fra.me.REG[2];
+          /* ./parser//parser.nit:895 */
+          fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
+          /* ./parser//parser.nit:896 */
+          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, 896);
+          }
+          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, 896);
+          }
+          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_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+          /* ./../lib/standard//collection//array.nit:239 */
+          REGB4 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+          /* ./../lib/standard//collection//array.nit:239 */
+          REGB0 = REGB4;
+        } else {
+          /* ./../lib/standard//collection//array.nit:237 */
+          goto label3;
+        }
+      }
+      label3: while(0);
+      /* ./parser//parser.nit:898 */
+      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, 898);
+      }
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+      CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
+    } else {
+      /* ./parser//parser.nit:900 */
+      REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_Prod, ID_Prod)) /*cast Prod*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser, 900);
+      }
+      /* ./parser//parser.nit:901 */
+      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, 901);
+      }
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+      /* ./parser//parser.nit:903 */
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+      /* ./parser//parser.nit:904 */
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
+      /* ./parser//parser.nit:905 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 905);
+      }
+      CALL_parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      /* ./parser//parser.nit:906 */
+      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+      /* ./parser//parser.nit:907 */
+      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(false);
+          REGB0 = REGB4;
+        } else {
+          REGB4 = CALL_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:909 */
+      ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
+      /* ./parser//parser.nit:910 */
+      fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
+      /* ./parser//parser.nit:911 */
+      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(false);
+          REGB0 = REGB4;
+        } else {
+          REGB4 = CALL_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:913 */
+        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(false);
+            REGB0 = REGB4;
+          } else {
+            REGB4 = CALL_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, 913);
+        }
+        /* ./parser//parser.nit:915 */
+        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
+        }
+        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, 915);
+        }
+        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, 915);
+        }
+        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, 915);
+        }
+        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, 915);
+        }
+        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, 915);
+        }
+        CALL_parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./parser//parser.nit:917 */
+        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, 917);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        /* ./../lib/standard//collection//array.nit:234 */
+        REGB2 = TAG_Int(0);
+        /* ./../lib/standard//collection//array.nit:235 */
+        REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
+        }
+        REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+        /* ./../lib/standard//collection//array.nit:236 */
+        fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[4]);
+        /* ./../lib/standard//collection//array.nit:237 */
+        while(1) {
+          /* ./../lib/standard//collection//array.nit:23 */
+          REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+          }
+          REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+          /* ./../lib/standard//kernel.nit:212 */
+          REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+          /* ./../lib/standard//collection//array.nit:237 */
+          if (UNTAG_Bool(REGB3)) {
+            /* ./../lib/standard//collection//array.nit:238 */
+            REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+            if (UNTAG_Bool(REGB3)) {
+              nit_abort("Reciever is null", NULL, LOCATE_array, 238);
+            }
+            /* ./../lib/standard//collection//array.nit:654 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
+            /* ./parser//parser.nit:920 */
+            REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+            if (UNTAG_Bool(REGB3)) {
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
+            }
+            fra.me.REG[6] = CALL_location___Location___file(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, 920);
+            }
+            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, 920);
+            }
+            REGB4 = CALL_location___Location___line_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, 920);
+            }
+            REGB0 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+            REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
+            }
+            REGB1 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+            fra.me.REG[6] = NEW_Location_location___Location___init(fra.me.REG[6], REGB3, REGB4, REGB0, REGB1);
+            CALL_parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+            /* ./../lib/standard//collection//array.nit:239 */
+            REGB1 = TAG_Int(1);
+            /* ./../lib/standard//kernel.nit:215 */
+            REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
+            /* ./../lib/standard//collection//array.nit:239 */
+            REGB2 = REGB1;
+          } else {
+            /* ./../lib/standard//collection//array.nit:237 */
+            goto label4;
+          }
+        }
+        label4: while(0);
+        /* ./parser//parser.nit:922 */
+        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, 922);
+        }
+        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
+        /* ./parser//parser.nit:924 */
+        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, 924);
         }
-        variable[17] = variable[18];
-        if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-        variable[17] = variable[14];
-        variable[17] = ATTR_array___Array____items(variable[17]) /*Array::_items*/;
-        variable[17] = UNBOX_NativeArray(variable[17])[UNTAG_Int( variable[15] /*index*/)];
-        variable[16] = variable[17];
-        goto return_label25;
-        return_label25: while(false);
-        variable[13] = variable[16];
-        variable[14] = variable[0];
-        ((parser___ReduceAction___action_t)CALL(variable[13],COLOR_parser___ReduceAction___action))(variable[13], variable[14]) /*ReduceAction::action*/;
-      } else { /*if*/
-        variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(2)));
-        if (UNTAG_Bool(variable[13])) { /*if*/
-          variable[14] = ((lexer___Lexer___next_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___next))( variable[3] /*lexer*/) /*Lexer::next*/;
-          variable[13] = variable[14];
-          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);}
-          variable[15] = variable[0];
-          variable[15] = ((parser___Parser___pop_t)CALL(variable[15],COLOR_parser___Parser___pop))(variable[15]) /*Parser::pop*/;
-          variable[14] = variable[15];
-          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);}
-          variable[16] = NEW_Start_parser_prod___Start___init( variable[14] /*node1*/,  variable[13] /*node2*/); /*new Start*/
-          variable[15] = variable[16];
-          variable[16] = NEW_SearchTokensVisitor_parser___SearchTokensVisitor___init(); /*new SearchTokensVisitor*/
-          ((parser___SearchTokensVisitor___visit_t)CALL(variable[16],COLOR_parser_prod___Visitor___visit))(variable[16],  variable[15] /*node*/) /*SearchTokensVisitor::visit*/;
-          variable[1] =  variable[15] /*node*/;
-          goto return_label15;
-        } else { /*if*/
-          variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(3)));
-          if (UNTAG_Bool(variable[13])) { /*if*/
-            variable[14] = ((lexer___Lexer___filename_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___filename))( variable[3] /*lexer*/) /*Lexer::filename*/;
-            variable[15] = variable[0];
-            variable[15] = ((parser_tables___ParserTable___error_messages_t)CALL(variable[15],COLOR_parser_tables___ParserTable___error_messages))(variable[15]) /*ParserTable::error_messages*/;
-            variable[16] = variable[0];
-            variable[16] = ((parser_tables___ParserTable___errors_t)CALL(variable[16],COLOR_parser_tables___ParserTable___errors))(variable[16]) /*ParserTable::errors*/;
-            variable[17] = variable[16];
-            variable[18] =  variable[10] /*action_value*/;
-            variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-            variable[21] = variable[20];
-            if (UNTAG_Bool(variable[21])) { /* and */
-              variable[21] = variable[17];
-              variable[21] = ATTR_array___AbstractArray____length(variable[21]) /*AbstractArray::_length*/;
-              variable[21] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)<UNTAG_Int(variable[21]));
+        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        /* ./../lib/standard//collection//array.nit:234 */
+        REGB2 = TAG_Int(0);
+        /* ./../lib/standard//collection//array.nit:235 */
+        REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
+        }
+        REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+        /* ./../lib/standard//collection//array.nit:236 */
+        fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[2]);
+        /* ./../lib/standard//collection//array.nit:237 */
+        while(1) {
+          /* ./../lib/standard//collection//array.nit:23 */
+          REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+          }
+          REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+          /* ./../lib/standard//kernel.nit:212 */
+          REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+          /* ./../lib/standard//collection//array.nit:237 */
+          if (UNTAG_Bool(REGB1)) {
+            /* ./../lib/standard//collection//array.nit:238 */
+            REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_array, 238);
+            }
+            /* ./../lib/standard//collection//array.nit:654 */
+            fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
+            /* ./parser//parser.nit:927 */
+            REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
+            }
+            fra.me.REG[6] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
+            REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
             }
-            variable[20] = variable[21];
-            if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-            variable[20] = variable[17];
-            variable[20] = ATTR_array___Array____items(variable[20]) /*Array::_items*/;
-            variable[20] = UNBOX_NativeArray(variable[20])[UNTAG_Int( variable[18] /*index*/)];
-            variable[19] = variable[20];
-            goto return_label26;
-            return_label26: while(false);
-            variable[16] = variable[19];
-            variable[17] = variable[15];
-            variable[18] = variable[16];
-            variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-            variable[21] = variable[20];
-            if (UNTAG_Bool(variable[21])) { /* and */
-              variable[21] = variable[17];
-              variable[21] = ATTR_array___AbstractArray____length(variable[21]) /*AbstractArray::_length*/;
-              variable[21] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)<UNTAG_Int(variable[21]));
+            REGB1 = CALL_location___Location___line_end(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, 927);
             }
-            variable[20] = variable[21];
-            if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
-            variable[20] = variable[17];
-            variable[20] = ATTR_array___Array____items(variable[20]) /*Array::_items*/;
-            variable[20] = UNBOX_NativeArray(variable[20])[UNTAG_Int( variable[18] /*index*/)];
-            variable[19] = variable[20];
-            goto return_label27;
-            return_label27: while(false);
-            variable[15] = variable[19];
-            variable[16] = NEW_PError_lexer___PError___init_error(variable[14],  variable[6] /*last_line*/,  variable[5] /*last_pos*/, variable[15]); /*new PError*/
-            variable[14] = variable[16];
-            variable[13] = variable[14];
-            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;
+            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, 927);
+            }
+            REGB4 = CALL_location___Location___column_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, 927);
+            }
+            REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+            fra.me.REG[6] = NEW_Location_location___Location___init(fra.me.REG[6], REGB1, REGB0, REGB4, REGB3);
+            CALL_parser_nodes___Prod___location__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+            /* ./../lib/standard//collection//array.nit:239 */
+            REGB3 = TAG_Int(1);
+            /* ./../lib/standard//kernel.nit:215 */
+            REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+            /* ./../lib/standard//collection//array.nit:239 */
+            REGB2 = REGB3;
+          } else {
+            /* ./../lib/standard//collection//array.nit:237 */
+            goto label5;
+          }
+        }
+        label5: while(0);
+        /* ./parser//parser.nit:929 */
+        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, 929);
+        }
+        fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[8])(fra.me.REG[8]);
+      } else {
+        /* ./parser//parser.nit:933 */
+        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(false);
+            REGB2 = REGB3;
+          } else {
+            REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB2 = REGB3;
+          }
+        }
+        if (UNTAG_Bool(REGB2)) {
+          /* ./parser//parser.nit:935 */
+          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, 935);
+          }
+          fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        } else {
+          /* ./parser//parser.nit:938 */
+          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, 938);
           }
+          fra.me.REG[0] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          CALL_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[829];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(825)); /*new Array[ReduceAction]*/
-  variable[4] = NEW_ReduceAction0_parser___ReduceAction0___init(); /*new ReduceAction0*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[4]) /*AbstractArray::add*/;
-  variable[5] = NEW_ReduceAction1_parser___ReduceAction1___init(); /*new ReduceAction1*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[5]) /*AbstractArray::add*/;
-  variable[6] = NEW_ReduceAction2_parser___ReduceAction2___init(); /*new ReduceAction2*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[6]) /*AbstractArray::add*/;
-  variable[7] = NEW_ReduceAction3_parser___ReduceAction3___init(); /*new ReduceAction3*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[7]) /*AbstractArray::add*/;
-  variable[8] = NEW_ReduceAction4_parser___ReduceAction4___init(); /*new ReduceAction4*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[8]) /*AbstractArray::add*/;
-  variable[9] = NEW_ReduceAction5_parser___ReduceAction5___init(); /*new ReduceAction5*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[9]) /*AbstractArray::add*/;
-  variable[10] = NEW_ReduceAction6_parser___ReduceAction6___init(); /*new ReduceAction6*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[10]) /*AbstractArray::add*/;
-  variable[11] = NEW_ReduceAction7_parser___ReduceAction7___init(); /*new ReduceAction7*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[11]) /*AbstractArray::add*/;
-  variable[12] = NEW_ReduceAction8_parser___ReduceAction8___init(); /*new ReduceAction8*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[12]) /*AbstractArray::add*/;
-  variable[13] = NEW_ReduceAction9_parser___ReduceAction9___init(); /*new ReduceAction9*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[13]) /*AbstractArray::add*/;
-  variable[14] = NEW_ReduceAction10_parser___ReduceAction10___init(); /*new ReduceAction10*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[14]) /*AbstractArray::add*/;
-  variable[15] = NEW_ReduceAction11_parser___ReduceAction11___init(); /*new ReduceAction11*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[15]) /*AbstractArray::add*/;
-  variable[16] = NEW_ReduceAction12_parser___ReduceAction12___init(); /*new ReduceAction12*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[16]) /*AbstractArray::add*/;
-  variable[17] = NEW_ReduceAction13_parser___ReduceAction13___init(); /*new ReduceAction13*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[17]) /*AbstractArray::add*/;
-  variable[18] = NEW_ReduceAction14_parser___ReduceAction14___init(); /*new ReduceAction14*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[18]) /*AbstractArray::add*/;
-  variable[19] = NEW_ReduceAction15_parser___ReduceAction15___init(); /*new ReduceAction15*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[19]) /*AbstractArray::add*/;
-  variable[20] = NEW_ReduceAction16_parser___ReduceAction16___init(); /*new ReduceAction16*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[20]) /*AbstractArray::add*/;
-  variable[21] = NEW_ReduceAction17_parser___ReduceAction17___init(); /*new ReduceAction17*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[21]) /*AbstractArray::add*/;
-  variable[22] = NEW_ReduceAction18_parser___ReduceAction18___init(); /*new ReduceAction18*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[22]) /*AbstractArray::add*/;
-  variable[23] = NEW_ReduceAction19_parser___ReduceAction19___init(); /*new ReduceAction19*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[23]) /*AbstractArray::add*/;
-  variable[24] = NEW_ReduceAction20_parser___ReduceAction20___init(); /*new ReduceAction20*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[24]) /*AbstractArray::add*/;
-  variable[25] = NEW_ReduceAction21_parser___ReduceAction21___init(); /*new ReduceAction21*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[25]) /*AbstractArray::add*/;
-  variable[26] = NEW_ReduceAction22_parser___ReduceAction22___init(); /*new ReduceAction22*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[26]) /*AbstractArray::add*/;
-  variable[27] = NEW_ReduceAction23_parser___ReduceAction23___init(); /*new ReduceAction23*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[27]) /*AbstractArray::add*/;
-  variable[28] = NEW_ReduceAction24_parser___ReduceAction24___init(); /*new ReduceAction24*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[28]) /*AbstractArray::add*/;
-  variable[29] = NEW_ReduceAction25_parser___ReduceAction25___init(); /*new ReduceAction25*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[29]) /*AbstractArray::add*/;
-  variable[30] = NEW_ReduceAction26_parser___ReduceAction26___init(); /*new ReduceAction26*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[30]) /*AbstractArray::add*/;
-  variable[31] = NEW_ReduceAction27_parser___ReduceAction27___init(); /*new ReduceAction27*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[31]) /*AbstractArray::add*/;
-  variable[32] = NEW_ReduceAction28_parser___ReduceAction28___init(); /*new ReduceAction28*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[32]) /*AbstractArray::add*/;
-  variable[33] = NEW_ReduceAction29_parser___ReduceAction29___init(); /*new ReduceAction29*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[33]) /*AbstractArray::add*/;
-  variable[34] = NEW_ReduceAction30_parser___ReduceAction30___init(); /*new ReduceAction30*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[34]) /*AbstractArray::add*/;
-  variable[35] = NEW_ReduceAction31_parser___ReduceAction31___init(); /*new ReduceAction31*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[35]) /*AbstractArray::add*/;
-  variable[36] = NEW_ReduceAction32_parser___ReduceAction32___init(); /*new ReduceAction32*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[36]) /*AbstractArray::add*/;
-  variable[37] = NEW_ReduceAction33_parser___ReduceAction33___init(); /*new ReduceAction33*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[37]) /*AbstractArray::add*/;
-  variable[38] = NEW_ReduceAction34_parser___ReduceAction34___init(); /*new ReduceAction34*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[38]) /*AbstractArray::add*/;
-  variable[39] = NEW_ReduceAction35_parser___ReduceAction35___init(); /*new ReduceAction35*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[39]) /*AbstractArray::add*/;
-  variable[40] = NEW_ReduceAction36_parser___ReduceAction36___init(); /*new ReduceAction36*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[40]) /*AbstractArray::add*/;
-  variable[41] = NEW_ReduceAction37_parser___ReduceAction37___init(); /*new ReduceAction37*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[41]) /*AbstractArray::add*/;
-  variable[42] = NEW_ReduceAction38_parser___ReduceAction38___init(); /*new ReduceAction38*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[42]) /*AbstractArray::add*/;
-  variable[43] = NEW_ReduceAction39_parser___ReduceAction39___init(); /*new ReduceAction39*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[43]) /*AbstractArray::add*/;
-  variable[44] = NEW_ReduceAction40_parser___ReduceAction40___init(); /*new ReduceAction40*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[44]) /*AbstractArray::add*/;
-  variable[45] = NEW_ReduceAction41_parser___ReduceAction41___init(); /*new ReduceAction41*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[45]) /*AbstractArray::add*/;
-  variable[46] = NEW_ReduceAction42_parser___ReduceAction42___init(); /*new ReduceAction42*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[46]) /*AbstractArray::add*/;
-  variable[47] = NEW_ReduceAction43_parser___ReduceAction43___init(); /*new ReduceAction43*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[47]) /*AbstractArray::add*/;
-  variable[48] = NEW_ReduceAction44_parser___ReduceAction44___init(); /*new ReduceAction44*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[48]) /*AbstractArray::add*/;
-  variable[49] = NEW_ReduceAction45_parser___ReduceAction45___init(); /*new ReduceAction45*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[49]) /*AbstractArray::add*/;
-  variable[50] = NEW_ReduceAction46_parser___ReduceAction46___init(); /*new ReduceAction46*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[50]) /*AbstractArray::add*/;
-  variable[51] = NEW_ReduceAction47_parser___ReduceAction47___init(); /*new ReduceAction47*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[51]) /*AbstractArray::add*/;
-  variable[52] = NEW_ReduceAction48_parser___ReduceAction48___init(); /*new ReduceAction48*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[52]) /*AbstractArray::add*/;
-  variable[53] = NEW_ReduceAction49_parser___ReduceAction49___init(); /*new ReduceAction49*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[53]) /*AbstractArray::add*/;
-  variable[54] = NEW_ReduceAction50_parser___ReduceAction50___init(); /*new ReduceAction50*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[54]) /*AbstractArray::add*/;
-  variable[55] = NEW_ReduceAction51_parser___ReduceAction51___init(); /*new ReduceAction51*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[55]) /*AbstractArray::add*/;
-  variable[56] = NEW_ReduceAction52_parser___ReduceAction52___init(); /*new ReduceAction52*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[56]) /*AbstractArray::add*/;
-  variable[57] = NEW_ReduceAction53_parser___ReduceAction53___init(); /*new ReduceAction53*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[57]) /*AbstractArray::add*/;
-  variable[58] = NEW_ReduceAction54_parser___ReduceAction54___init(); /*new ReduceAction54*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[58]) /*AbstractArray::add*/;
-  variable[59] = NEW_ReduceAction55_parser___ReduceAction55___init(); /*new ReduceAction55*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[59]) /*AbstractArray::add*/;
-  variable[60] = NEW_ReduceAction56_parser___ReduceAction56___init(); /*new ReduceAction56*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[60]) /*AbstractArray::add*/;
-  variable[61] = NEW_ReduceAction57_parser___ReduceAction57___init(); /*new ReduceAction57*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[61]) /*AbstractArray::add*/;
-  variable[62] = NEW_ReduceAction58_parser___ReduceAction58___init(); /*new ReduceAction58*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[62]) /*AbstractArray::add*/;
-  variable[63] = NEW_ReduceAction59_parser___ReduceAction59___init(); /*new ReduceAction59*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[63]) /*AbstractArray::add*/;
-  variable[64] = NEW_ReduceAction60_parser___ReduceAction60___init(); /*new ReduceAction60*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[64]) /*AbstractArray::add*/;
-  variable[65] = NEW_ReduceAction61_parser___ReduceAction61___init(); /*new ReduceAction61*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[65]) /*AbstractArray::add*/;
-  variable[66] = NEW_ReduceAction62_parser___ReduceAction62___init(); /*new ReduceAction62*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[66]) /*AbstractArray::add*/;
-  variable[67] = NEW_ReduceAction63_parser___ReduceAction63___init(); /*new ReduceAction63*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[67]) /*AbstractArray::add*/;
-  variable[68] = NEW_ReduceAction64_parser___ReduceAction64___init(); /*new ReduceAction64*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[68]) /*AbstractArray::add*/;
-  variable[69] = NEW_ReduceAction65_parser___ReduceAction65___init(); /*new ReduceAction65*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[69]) /*AbstractArray::add*/;
-  variable[70] = NEW_ReduceAction66_parser___ReduceAction66___init(); /*new ReduceAction66*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[70]) /*AbstractArray::add*/;
-  variable[71] = NEW_ReduceAction67_parser___ReduceAction67___init(); /*new ReduceAction67*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[71]) /*AbstractArray::add*/;
-  variable[72] = NEW_ReduceAction68_parser___ReduceAction68___init(); /*new ReduceAction68*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[72]) /*AbstractArray::add*/;
-  variable[73] = NEW_ReduceAction69_parser___ReduceAction69___init(); /*new ReduceAction69*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[73]) /*AbstractArray::add*/;
-  variable[74] = NEW_ReduceAction70_parser___ReduceAction70___init(); /*new ReduceAction70*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[74]) /*AbstractArray::add*/;
-  variable[75] = NEW_ReduceAction71_parser___ReduceAction71___init(); /*new ReduceAction71*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[75]) /*AbstractArray::add*/;
-  variable[76] = NEW_ReduceAction72_parser___ReduceAction72___init(); /*new ReduceAction72*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[76]) /*AbstractArray::add*/;
-  variable[77] = NEW_ReduceAction73_parser___ReduceAction73___init(); /*new ReduceAction73*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[77]) /*AbstractArray::add*/;
-  variable[78] = NEW_ReduceAction74_parser___ReduceAction74___init(); /*new ReduceAction74*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[78]) /*AbstractArray::add*/;
-  variable[79] = NEW_ReduceAction75_parser___ReduceAction75___init(); /*new ReduceAction75*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[79]) /*AbstractArray::add*/;
-  variable[80] = NEW_ReduceAction76_parser___ReduceAction76___init(); /*new ReduceAction76*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[80]) /*AbstractArray::add*/;
-  variable[81] = NEW_ReduceAction77_parser___ReduceAction77___init(); /*new ReduceAction77*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[81]) /*AbstractArray::add*/;
-  variable[82] = NEW_ReduceAction78_parser___ReduceAction78___init(); /*new ReduceAction78*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[82]) /*AbstractArray::add*/;
-  variable[83] = NEW_ReduceAction79_parser___ReduceAction79___init(); /*new ReduceAction79*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[83]) /*AbstractArray::add*/;
-  variable[84] = NEW_ReduceAction80_parser___ReduceAction80___init(); /*new ReduceAction80*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[84]) /*AbstractArray::add*/;
-  variable[85] = NEW_ReduceAction81_parser___ReduceAction81___init(); /*new ReduceAction81*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[85]) /*AbstractArray::add*/;
-  variable[86] = NEW_ReduceAction82_parser___ReduceAction82___init(); /*new ReduceAction82*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[86]) /*AbstractArray::add*/;
-  variable[87] = NEW_ReduceAction83_parser___ReduceAction83___init(); /*new ReduceAction83*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[87]) /*AbstractArray::add*/;
-  variable[88] = NEW_ReduceAction84_parser___ReduceAction84___init(); /*new ReduceAction84*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[88]) /*AbstractArray::add*/;
-  variable[89] = NEW_ReduceAction85_parser___ReduceAction85___init(); /*new ReduceAction85*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[89]) /*AbstractArray::add*/;
-  variable[90] = NEW_ReduceAction86_parser___ReduceAction86___init(); /*new ReduceAction86*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[90]) /*AbstractArray::add*/;
-  variable[91] = NEW_ReduceAction87_parser___ReduceAction87___init(); /*new ReduceAction87*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[91]) /*AbstractArray::add*/;
-  variable[92] = NEW_ReduceAction88_parser___ReduceAction88___init(); /*new ReduceAction88*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[92]) /*AbstractArray::add*/;
-  variable[93] = NEW_ReduceAction89_parser___ReduceAction89___init(); /*new ReduceAction89*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[93]) /*AbstractArray::add*/;
-  variable[94] = NEW_ReduceAction90_parser___ReduceAction90___init(); /*new ReduceAction90*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[94]) /*AbstractArray::add*/;
-  variable[95] = NEW_ReduceAction91_parser___ReduceAction91___init(); /*new ReduceAction91*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[95]) /*AbstractArray::add*/;
-  variable[96] = NEW_ReduceAction92_parser___ReduceAction92___init(); /*new ReduceAction92*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[96]) /*AbstractArray::add*/;
-  variable[97] = NEW_ReduceAction93_parser___ReduceAction93___init(); /*new ReduceAction93*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[97]) /*AbstractArray::add*/;
-  variable[98] = NEW_ReduceAction94_parser___ReduceAction94___init(); /*new ReduceAction94*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[98]) /*AbstractArray::add*/;
-  variable[99] = NEW_ReduceAction95_parser___ReduceAction95___init(); /*new ReduceAction95*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[99]) /*AbstractArray::add*/;
-  variable[100] = NEW_ReduceAction96_parser___ReduceAction96___init(); /*new ReduceAction96*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[100]) /*AbstractArray::add*/;
-  variable[101] = NEW_ReduceAction97_parser___ReduceAction97___init(); /*new ReduceAction97*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[101]) /*AbstractArray::add*/;
-  variable[102] = NEW_ReduceAction98_parser___ReduceAction98___init(); /*new ReduceAction98*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[102]) /*AbstractArray::add*/;
-  variable[103] = NEW_ReduceAction99_parser___ReduceAction99___init(); /*new ReduceAction99*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[103]) /*AbstractArray::add*/;
-  variable[104] = NEW_ReduceAction100_parser___ReduceAction100___init(); /*new ReduceAction100*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[104]) /*AbstractArray::add*/;
-  variable[105] = NEW_ReduceAction101_parser___ReduceAction101___init(); /*new ReduceAction101*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[105]) /*AbstractArray::add*/;
-  variable[106] = NEW_ReduceAction102_parser___ReduceAction102___init(); /*new ReduceAction102*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[106]) /*AbstractArray::add*/;
-  variable[107] = NEW_ReduceAction103_parser___ReduceAction103___init(); /*new ReduceAction103*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[107]) /*AbstractArray::add*/;
-  variable[108] = NEW_ReduceAction104_parser___ReduceAction104___init(); /*new ReduceAction104*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[108]) /*AbstractArray::add*/;
-  variable[109] = NEW_ReduceAction105_parser___ReduceAction105___init(); /*new ReduceAction105*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[109]) /*AbstractArray::add*/;
-  variable[110] = NEW_ReduceAction106_parser___ReduceAction106___init(); /*new ReduceAction106*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[110]) /*AbstractArray::add*/;
-  variable[111] = NEW_ReduceAction107_parser___ReduceAction107___init(); /*new ReduceAction107*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[111]) /*AbstractArray::add*/;
-  variable[112] = NEW_ReduceAction108_parser___ReduceAction108___init(); /*new ReduceAction108*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[112]) /*AbstractArray::add*/;
-  variable[113] = NEW_ReduceAction109_parser___ReduceAction109___init(); /*new ReduceAction109*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[113]) /*AbstractArray::add*/;
-  variable[114] = NEW_ReduceAction110_parser___ReduceAction110___init(); /*new ReduceAction110*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[114]) /*AbstractArray::add*/;
-  variable[115] = NEW_ReduceAction111_parser___ReduceAction111___init(); /*new ReduceAction111*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[115]) /*AbstractArray::add*/;
-  variable[116] = NEW_ReduceAction112_parser___ReduceAction112___init(); /*new ReduceAction112*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[116]) /*AbstractArray::add*/;
-  variable[117] = NEW_ReduceAction113_parser___ReduceAction113___init(); /*new ReduceAction113*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[117]) /*AbstractArray::add*/;
-  variable[118] = NEW_ReduceAction114_parser___ReduceAction114___init(); /*new ReduceAction114*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[118]) /*AbstractArray::add*/;
-  variable[119] = NEW_ReduceAction115_parser___ReduceAction115___init(); /*new ReduceAction115*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[119]) /*AbstractArray::add*/;
-  variable[120] = NEW_ReduceAction116_parser___ReduceAction116___init(); /*new ReduceAction116*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[120]) /*AbstractArray::add*/;
-  variable[121] = NEW_ReduceAction117_parser___ReduceAction117___init(); /*new ReduceAction117*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[121]) /*AbstractArray::add*/;
-  variable[122] = NEW_ReduceAction118_parser___ReduceAction118___init(); /*new ReduceAction118*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[122]) /*AbstractArray::add*/;
-  variable[123] = NEW_ReduceAction119_parser___ReduceAction119___init(); /*new ReduceAction119*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[123]) /*AbstractArray::add*/;
-  variable[124] = NEW_ReduceAction120_parser___ReduceAction120___init(); /*new ReduceAction120*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[124]) /*AbstractArray::add*/;
-  variable[125] = NEW_ReduceAction121_parser___ReduceAction121___init(); /*new ReduceAction121*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[125]) /*AbstractArray::add*/;
-  variable[126] = NEW_ReduceAction122_parser___ReduceAction122___init(); /*new ReduceAction122*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[126]) /*AbstractArray::add*/;
-  variable[127] = NEW_ReduceAction123_parser___ReduceAction123___init(); /*new ReduceAction123*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[127]) /*AbstractArray::add*/;
-  variable[128] = NEW_ReduceAction124_parser___ReduceAction124___init(); /*new ReduceAction124*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[128]) /*AbstractArray::add*/;
-  variable[129] = NEW_ReduceAction125_parser___ReduceAction125___init(); /*new ReduceAction125*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[129]) /*AbstractArray::add*/;
-  variable[130] = NEW_ReduceAction126_parser___ReduceAction126___init(); /*new ReduceAction126*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[130]) /*AbstractArray::add*/;
-  variable[131] = NEW_ReduceAction127_parser___ReduceAction127___init(); /*new ReduceAction127*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[131]) /*AbstractArray::add*/;
-  variable[132] = NEW_ReduceAction128_parser___ReduceAction128___init(); /*new ReduceAction128*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[132]) /*AbstractArray::add*/;
-  variable[133] = NEW_ReduceAction129_parser___ReduceAction129___init(); /*new ReduceAction129*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[133]) /*AbstractArray::add*/;
-  variable[134] = NEW_ReduceAction130_parser___ReduceAction130___init(); /*new ReduceAction130*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[134]) /*AbstractArray::add*/;
-  variable[135] = NEW_ReduceAction131_parser___ReduceAction131___init(); /*new ReduceAction131*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[135]) /*AbstractArray::add*/;
-  variable[136] = NEW_ReduceAction132_parser___ReduceAction132___init(); /*new ReduceAction132*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[136]) /*AbstractArray::add*/;
-  variable[137] = NEW_ReduceAction133_parser___ReduceAction133___init(); /*new ReduceAction133*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[137]) /*AbstractArray::add*/;
-  variable[138] = NEW_ReduceAction134_parser___ReduceAction134___init(); /*new ReduceAction134*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[138]) /*AbstractArray::add*/;
-  variable[139] = NEW_ReduceAction135_parser___ReduceAction135___init(); /*new ReduceAction135*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[139]) /*AbstractArray::add*/;
-  variable[140] = NEW_ReduceAction136_parser___ReduceAction136___init(); /*new ReduceAction136*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[140]) /*AbstractArray::add*/;
-  variable[141] = NEW_ReduceAction137_parser___ReduceAction137___init(); /*new ReduceAction137*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[141]) /*AbstractArray::add*/;
-  variable[142] = NEW_ReduceAction138_parser___ReduceAction138___init(); /*new ReduceAction138*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[142]) /*AbstractArray::add*/;
-  variable[143] = NEW_ReduceAction139_parser___ReduceAction139___init(); /*new ReduceAction139*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[143]) /*AbstractArray::add*/;
-  variable[144] = NEW_ReduceAction140_parser___ReduceAction140___init(); /*new ReduceAction140*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[144]) /*AbstractArray::add*/;
-  variable[145] = NEW_ReduceAction141_parser___ReduceAction141___init(); /*new ReduceAction141*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[145]) /*AbstractArray::add*/;
-  variable[146] = NEW_ReduceAction142_parser___ReduceAction142___init(); /*new ReduceAction142*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[146]) /*AbstractArray::add*/;
-  variable[147] = NEW_ReduceAction143_parser___ReduceAction143___init(); /*new ReduceAction143*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[147]) /*AbstractArray::add*/;
-  variable[148] = NEW_ReduceAction144_parser___ReduceAction144___init(); /*new ReduceAction144*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[148]) /*AbstractArray::add*/;
-  variable[149] = NEW_ReduceAction145_parser___ReduceAction145___init(); /*new ReduceAction145*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[149]) /*AbstractArray::add*/;
-  variable[150] = NEW_ReduceAction146_parser___ReduceAction146___init(); /*new ReduceAction146*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[150]) /*AbstractArray::add*/;
-  variable[151] = NEW_ReduceAction147_parser___ReduceAction147___init(); /*new ReduceAction147*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[151]) /*AbstractArray::add*/;
-  variable[152] = NEW_ReduceAction148_parser___ReduceAction148___init(); /*new ReduceAction148*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[152]) /*AbstractArray::add*/;
-  variable[153] = NEW_ReduceAction149_parser___ReduceAction149___init(); /*new ReduceAction149*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[153]) /*AbstractArray::add*/;
-  variable[154] = NEW_ReduceAction150_parser___ReduceAction150___init(); /*new ReduceAction150*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[154]) /*AbstractArray::add*/;
-  variable[155] = NEW_ReduceAction151_parser___ReduceAction151___init(); /*new ReduceAction151*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[155]) /*AbstractArray::add*/;
-  variable[156] = NEW_ReduceAction152_parser___ReduceAction152___init(); /*new ReduceAction152*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[156]) /*AbstractArray::add*/;
-  variable[157] = NEW_ReduceAction153_parser___ReduceAction153___init(); /*new ReduceAction153*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[157]) /*AbstractArray::add*/;
-  variable[158] = NEW_ReduceAction154_parser___ReduceAction154___init(); /*new ReduceAction154*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[158]) /*AbstractArray::add*/;
-  variable[159] = NEW_ReduceAction155_parser___ReduceAction155___init(); /*new ReduceAction155*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[159]) /*AbstractArray::add*/;
-  variable[160] = NEW_ReduceAction156_parser___ReduceAction156___init(); /*new ReduceAction156*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[160]) /*AbstractArray::add*/;
-  variable[161] = NEW_ReduceAction157_parser___ReduceAction157___init(); /*new ReduceAction157*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[161]) /*AbstractArray::add*/;
-  variable[162] = NEW_ReduceAction158_parser___ReduceAction158___init(); /*new ReduceAction158*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[162]) /*AbstractArray::add*/;
-  variable[163] = NEW_ReduceAction159_parser___ReduceAction159___init(); /*new ReduceAction159*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[163]) /*AbstractArray::add*/;
-  variable[164] = NEW_ReduceAction160_parser___ReduceAction160___init(); /*new ReduceAction160*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[164]) /*AbstractArray::add*/;
-  variable[165] = NEW_ReduceAction161_parser___ReduceAction161___init(); /*new ReduceAction161*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[165]) /*AbstractArray::add*/;
-  variable[166] = NEW_ReduceAction162_parser___ReduceAction162___init(); /*new ReduceAction162*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[166]) /*AbstractArray::add*/;
-  variable[167] = NEW_ReduceAction163_parser___ReduceAction163___init(); /*new ReduceAction163*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[167]) /*AbstractArray::add*/;
-  variable[168] = NEW_ReduceAction164_parser___ReduceAction164___init(); /*new ReduceAction164*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[168]) /*AbstractArray::add*/;
-  variable[169] = NEW_ReduceAction165_parser___ReduceAction165___init(); /*new ReduceAction165*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[169]) /*AbstractArray::add*/;
-  variable[170] = NEW_ReduceAction166_parser___ReduceAction166___init(); /*new ReduceAction166*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[170]) /*AbstractArray::add*/;
-  variable[171] = NEW_ReduceAction167_parser___ReduceAction167___init(); /*new ReduceAction167*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[171]) /*AbstractArray::add*/;
-  variable[172] = NEW_ReduceAction168_parser___ReduceAction168___init(); /*new ReduceAction168*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[172]) /*AbstractArray::add*/;
-  variable[173] = NEW_ReduceAction169_parser___ReduceAction169___init(); /*new ReduceAction169*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[173]) /*AbstractArray::add*/;
-  variable[174] = NEW_ReduceAction170_parser___ReduceAction170___init(); /*new ReduceAction170*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[174]) /*AbstractArray::add*/;
-  variable[175] = NEW_ReduceAction171_parser___ReduceAction171___init(); /*new ReduceAction171*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[175]) /*AbstractArray::add*/;
-  variable[176] = NEW_ReduceAction172_parser___ReduceAction172___init(); /*new ReduceAction172*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[176]) /*AbstractArray::add*/;
-  variable[177] = NEW_ReduceAction173_parser___ReduceAction173___init(); /*new ReduceAction173*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[177]) /*AbstractArray::add*/;
-  variable[178] = NEW_ReduceAction174_parser___ReduceAction174___init(); /*new ReduceAction174*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[178]) /*AbstractArray::add*/;
-  variable[179] = NEW_ReduceAction175_parser___ReduceAction175___init(); /*new ReduceAction175*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[179]) /*AbstractArray::add*/;
-  variable[180] = NEW_ReduceAction176_parser___ReduceAction176___init(); /*new ReduceAction176*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[180]) /*AbstractArray::add*/;
-  variable[181] = NEW_ReduceAction177_parser___ReduceAction177___init(); /*new ReduceAction177*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[181]) /*AbstractArray::add*/;
-  variable[182] = NEW_ReduceAction178_parser___ReduceAction178___init(); /*new ReduceAction178*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[182]) /*AbstractArray::add*/;
-  variable[183] = NEW_ReduceAction179_parser___ReduceAction179___init(); /*new ReduceAction179*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[183]) /*AbstractArray::add*/;
-  variable[184] = NEW_ReduceAction180_parser___ReduceAction180___init(); /*new ReduceAction180*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[184]) /*AbstractArray::add*/;
-  variable[185] = NEW_ReduceAction181_parser___ReduceAction181___init(); /*new ReduceAction181*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[185]) /*AbstractArray::add*/;
-  variable[186] = NEW_ReduceAction182_parser___ReduceAction182___init(); /*new ReduceAction182*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[186]) /*AbstractArray::add*/;
-  variable[187] = NEW_ReduceAction183_parser___ReduceAction183___init(); /*new ReduceAction183*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[187]) /*AbstractArray::add*/;
-  variable[188] = NEW_ReduceAction184_parser___ReduceAction184___init(); /*new ReduceAction184*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[188]) /*AbstractArray::add*/;
-  variable[189] = NEW_ReduceAction185_parser___ReduceAction185___init(); /*new ReduceAction185*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[189]) /*AbstractArray::add*/;
-  variable[190] = NEW_ReduceAction186_parser___ReduceAction186___init(); /*new ReduceAction186*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[190]) /*AbstractArray::add*/;
-  variable[191] = NEW_ReduceAction187_parser___ReduceAction187___init(); /*new ReduceAction187*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[191]) /*AbstractArray::add*/;
-  variable[192] = NEW_ReduceAction188_parser___ReduceAction188___init(); /*new ReduceAction188*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[192]) /*AbstractArray::add*/;
-  variable[193] = NEW_ReduceAction189_parser___ReduceAction189___init(); /*new ReduceAction189*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[193]) /*AbstractArray::add*/;
-  variable[194] = NEW_ReduceAction190_parser___ReduceAction190___init(); /*new ReduceAction190*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[194]) /*AbstractArray::add*/;
-  variable[195] = NEW_ReduceAction191_parser___ReduceAction191___init(); /*new ReduceAction191*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[195]) /*AbstractArray::add*/;
-  variable[196] = NEW_ReduceAction192_parser___ReduceAction192___init(); /*new ReduceAction192*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[196]) /*AbstractArray::add*/;
-  variable[197] = NEW_ReduceAction193_parser___ReduceAction193___init(); /*new ReduceAction193*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[197]) /*AbstractArray::add*/;
-  variable[198] = NEW_ReduceAction194_parser___ReduceAction194___init(); /*new ReduceAction194*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[198]) /*AbstractArray::add*/;
-  variable[199] = NEW_ReduceAction195_parser___ReduceAction195___init(); /*new ReduceAction195*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[199]) /*AbstractArray::add*/;
-  variable[200] = NEW_ReduceAction196_parser___ReduceAction196___init(); /*new ReduceAction196*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[200]) /*AbstractArray::add*/;
-  variable[201] = NEW_ReduceAction197_parser___ReduceAction197___init(); /*new ReduceAction197*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[201]) /*AbstractArray::add*/;
-  variable[202] = NEW_ReduceAction198_parser___ReduceAction198___init(); /*new ReduceAction198*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[202]) /*AbstractArray::add*/;
-  variable[203] = NEW_ReduceAction199_parser___ReduceAction199___init(); /*new ReduceAction199*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[203]) /*AbstractArray::add*/;
-  variable[204] = NEW_ReduceAction200_parser___ReduceAction200___init(); /*new ReduceAction200*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[204]) /*AbstractArray::add*/;
-  variable[205] = NEW_ReduceAction201_parser___ReduceAction201___init(); /*new ReduceAction201*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[205]) /*AbstractArray::add*/;
-  variable[206] = NEW_ReduceAction202_parser___ReduceAction202___init(); /*new ReduceAction202*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[206]) /*AbstractArray::add*/;
-  variable[207] = NEW_ReduceAction203_parser___ReduceAction203___init(); /*new ReduceAction203*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[207]) /*AbstractArray::add*/;
-  variable[208] = NEW_ReduceAction204_parser___ReduceAction204___init(); /*new ReduceAction204*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[208]) /*AbstractArray::add*/;
-  variable[209] = NEW_ReduceAction205_parser___ReduceAction205___init(); /*new ReduceAction205*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[209]) /*AbstractArray::add*/;
-  variable[210] = NEW_ReduceAction206_parser___ReduceAction206___init(); /*new ReduceAction206*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[210]) /*AbstractArray::add*/;
-  variable[211] = NEW_ReduceAction207_parser___ReduceAction207___init(); /*new ReduceAction207*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[211]) /*AbstractArray::add*/;
-  variable[212] = NEW_ReduceAction208_parser___ReduceAction208___init(); /*new ReduceAction208*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[212]) /*AbstractArray::add*/;
-  variable[213] = NEW_ReduceAction209_parser___ReduceAction209___init(); /*new ReduceAction209*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[213]) /*AbstractArray::add*/;
-  variable[214] = NEW_ReduceAction210_parser___ReduceAction210___init(); /*new ReduceAction210*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[214]) /*AbstractArray::add*/;
-  variable[215] = NEW_ReduceAction211_parser___ReduceAction211___init(); /*new ReduceAction211*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[215]) /*AbstractArray::add*/;
-  variable[216] = NEW_ReduceAction212_parser___ReduceAction212___init(); /*new ReduceAction212*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[216]) /*AbstractArray::add*/;
-  variable[217] = NEW_ReduceAction213_parser___ReduceAction213___init(); /*new ReduceAction213*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[217]) /*AbstractArray::add*/;
-  variable[218] = NEW_ReduceAction214_parser___ReduceAction214___init(); /*new ReduceAction214*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[218]) /*AbstractArray::add*/;
-  variable[219] = NEW_ReduceAction215_parser___ReduceAction215___init(); /*new ReduceAction215*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[219]) /*AbstractArray::add*/;
-  variable[220] = NEW_ReduceAction216_parser___ReduceAction216___init(); /*new ReduceAction216*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[220]) /*AbstractArray::add*/;
-  variable[221] = NEW_ReduceAction217_parser___ReduceAction217___init(); /*new ReduceAction217*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[221]) /*AbstractArray::add*/;
-  variable[222] = NEW_ReduceAction218_parser___ReduceAction218___init(); /*new ReduceAction218*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[222]) /*AbstractArray::add*/;
-  variable[223] = NEW_ReduceAction219_parser___ReduceAction219___init(); /*new ReduceAction219*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[223]) /*AbstractArray::add*/;
-  variable[224] = NEW_ReduceAction220_parser___ReduceAction220___init(); /*new ReduceAction220*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[224]) /*AbstractArray::add*/;
-  variable[225] = NEW_ReduceAction221_parser___ReduceAction221___init(); /*new ReduceAction221*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[225]) /*AbstractArray::add*/;
-  variable[226] = NEW_ReduceAction222_parser___ReduceAction222___init(); /*new ReduceAction222*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[226]) /*AbstractArray::add*/;
-  variable[227] = NEW_ReduceAction223_parser___ReduceAction223___init(); /*new ReduceAction223*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[227]) /*AbstractArray::add*/;
-  variable[228] = NEW_ReduceAction224_parser___ReduceAction224___init(); /*new ReduceAction224*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[228]) /*AbstractArray::add*/;
-  variable[229] = NEW_ReduceAction225_parser___ReduceAction225___init(); /*new ReduceAction225*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[229]) /*AbstractArray::add*/;
-  variable[230] = NEW_ReduceAction226_parser___ReduceAction226___init(); /*new ReduceAction226*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[230]) /*AbstractArray::add*/;
-  variable[231] = NEW_ReduceAction227_parser___ReduceAction227___init(); /*new ReduceAction227*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[231]) /*AbstractArray::add*/;
-  variable[232] = NEW_ReduceAction228_parser___ReduceAction228___init(); /*new ReduceAction228*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[232]) /*AbstractArray::add*/;
-  variable[233] = NEW_ReduceAction229_parser___ReduceAction229___init(); /*new ReduceAction229*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[233]) /*AbstractArray::add*/;
-  variable[234] = NEW_ReduceAction230_parser___ReduceAction230___init(); /*new ReduceAction230*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[234]) /*AbstractArray::add*/;
-  variable[235] = NEW_ReduceAction231_parser___ReduceAction231___init(); /*new ReduceAction231*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[235]) /*AbstractArray::add*/;
-  variable[236] = NEW_ReduceAction232_parser___ReduceAction232___init(); /*new ReduceAction232*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[236]) /*AbstractArray::add*/;
-  variable[237] = NEW_ReduceAction233_parser___ReduceAction233___init(); /*new ReduceAction233*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[237]) /*AbstractArray::add*/;
-  variable[238] = NEW_ReduceAction234_parser___ReduceAction234___init(); /*new ReduceAction234*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[238]) /*AbstractArray::add*/;
-  variable[239] = NEW_ReduceAction235_parser___ReduceAction235___init(); /*new ReduceAction235*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[239]) /*AbstractArray::add*/;
-  variable[240] = NEW_ReduceAction236_parser___ReduceAction236___init(); /*new ReduceAction236*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[240]) /*AbstractArray::add*/;
-  variable[241] = NEW_ReduceAction237_parser___ReduceAction237___init(); /*new ReduceAction237*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[241]) /*AbstractArray::add*/;
-  variable[242] = NEW_ReduceAction238_parser___ReduceAction238___init(); /*new ReduceAction238*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[242]) /*AbstractArray::add*/;
-  variable[243] = NEW_ReduceAction239_parser___ReduceAction239___init(); /*new ReduceAction239*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[243]) /*AbstractArray::add*/;
-  variable[244] = NEW_ReduceAction240_parser___ReduceAction240___init(); /*new ReduceAction240*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[244]) /*AbstractArray::add*/;
-  variable[245] = NEW_ReduceAction241_parser___ReduceAction241___init(); /*new ReduceAction241*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[245]) /*AbstractArray::add*/;
-  variable[246] = NEW_ReduceAction242_parser___ReduceAction242___init(); /*new ReduceAction242*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[246]) /*AbstractArray::add*/;
-  variable[247] = NEW_ReduceAction243_parser___ReduceAction243___init(); /*new ReduceAction243*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[247]) /*AbstractArray::add*/;
-  variable[248] = NEW_ReduceAction244_parser___ReduceAction244___init(); /*new ReduceAction244*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[248]) /*AbstractArray::add*/;
-  variable[249] = NEW_ReduceAction245_parser___ReduceAction245___init(); /*new ReduceAction245*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[249]) /*AbstractArray::add*/;
-  variable[250] = NEW_ReduceAction246_parser___ReduceAction246___init(); /*new ReduceAction246*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[250]) /*AbstractArray::add*/;
-  variable[251] = NEW_ReduceAction247_parser___ReduceAction247___init(); /*new ReduceAction247*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[251]) /*AbstractArray::add*/;
-  variable[252] = NEW_ReduceAction248_parser___ReduceAction248___init(); /*new ReduceAction248*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[252]) /*AbstractArray::add*/;
-  variable[253] = NEW_ReduceAction249_parser___ReduceAction249___init(); /*new ReduceAction249*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[253]) /*AbstractArray::add*/;
-  variable[254] = NEW_ReduceAction250_parser___ReduceAction250___init(); /*new ReduceAction250*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[254]) /*AbstractArray::add*/;
-  variable[255] = NEW_ReduceAction251_parser___ReduceAction251___init(); /*new ReduceAction251*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[255]) /*AbstractArray::add*/;
-  variable[256] = NEW_ReduceAction252_parser___ReduceAction252___init(); /*new ReduceAction252*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[256]) /*AbstractArray::add*/;
-  variable[257] = NEW_ReduceAction253_parser___ReduceAction253___init(); /*new ReduceAction253*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[257]) /*AbstractArray::add*/;
-  variable[258] = NEW_ReduceAction254_parser___ReduceAction254___init(); /*new ReduceAction254*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[258]) /*AbstractArray::add*/;
-  variable[259] = NEW_ReduceAction255_parser___ReduceAction255___init(); /*new ReduceAction255*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[259]) /*AbstractArray::add*/;
-  variable[260] = NEW_ReduceAction256_parser___ReduceAction256___init(); /*new ReduceAction256*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[260]) /*AbstractArray::add*/;
-  variable[261] = NEW_ReduceAction257_parser___ReduceAction257___init(); /*new ReduceAction257*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[261]) /*AbstractArray::add*/;
-  variable[262] = NEW_ReduceAction258_parser___ReduceAction258___init(); /*new ReduceAction258*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[262]) /*AbstractArray::add*/;
-  variable[263] = NEW_ReduceAction259_parser___ReduceAction259___init(); /*new ReduceAction259*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[263]) /*AbstractArray::add*/;
-  variable[264] = NEW_ReduceAction260_parser___ReduceAction260___init(); /*new ReduceAction260*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[264]) /*AbstractArray::add*/;
-  variable[265] = NEW_ReduceAction261_parser___ReduceAction261___init(); /*new ReduceAction261*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[265]) /*AbstractArray::add*/;
-  variable[266] = NEW_ReduceAction262_parser___ReduceAction262___init(); /*new ReduceAction262*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[266]) /*AbstractArray::add*/;
-  variable[267] = NEW_ReduceAction263_parser___ReduceAction263___init(); /*new ReduceAction263*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[267]) /*AbstractArray::add*/;
-  variable[268] = NEW_ReduceAction264_parser___ReduceAction264___init(); /*new ReduceAction264*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[268]) /*AbstractArray::add*/;
-  variable[269] = NEW_ReduceAction265_parser___ReduceAction265___init(); /*new ReduceAction265*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[269]) /*AbstractArray::add*/;
-  variable[270] = NEW_ReduceAction266_parser___ReduceAction266___init(); /*new ReduceAction266*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[270]) /*AbstractArray::add*/;
-  variable[271] = NEW_ReduceAction267_parser___ReduceAction267___init(); /*new ReduceAction267*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[271]) /*AbstractArray::add*/;
-  variable[272] = NEW_ReduceAction268_parser___ReduceAction268___init(); /*new ReduceAction268*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[272]) /*AbstractArray::add*/;
-  variable[273] = NEW_ReduceAction269_parser___ReduceAction269___init(); /*new ReduceAction269*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[273]) /*AbstractArray::add*/;
-  variable[274] = NEW_ReduceAction270_parser___ReduceAction270___init(); /*new ReduceAction270*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[274]) /*AbstractArray::add*/;
-  variable[275] = NEW_ReduceAction271_parser___ReduceAction271___init(); /*new ReduceAction271*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[275]) /*AbstractArray::add*/;
-  variable[276] = NEW_ReduceAction272_parser___ReduceAction272___init(); /*new ReduceAction272*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[276]) /*AbstractArray::add*/;
-  variable[277] = NEW_ReduceAction273_parser___ReduceAction273___init(); /*new ReduceAction273*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[277]) /*AbstractArray::add*/;
-  variable[278] = NEW_ReduceAction274_parser___ReduceAction274___init(); /*new ReduceAction274*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[278]) /*AbstractArray::add*/;
-  variable[279] = NEW_ReduceAction275_parser___ReduceAction275___init(); /*new ReduceAction275*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[279]) /*AbstractArray::add*/;
-  variable[280] = NEW_ReduceAction276_parser___ReduceAction276___init(); /*new ReduceAction276*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[280]) /*AbstractArray::add*/;
-  variable[281] = NEW_ReduceAction277_parser___ReduceAction277___init(); /*new ReduceAction277*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[281]) /*AbstractArray::add*/;
-  variable[282] = NEW_ReduceAction278_parser___ReduceAction278___init(); /*new ReduceAction278*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[282]) /*AbstractArray::add*/;
-  variable[283] = NEW_ReduceAction279_parser___ReduceAction279___init(); /*new ReduceAction279*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[283]) /*AbstractArray::add*/;
-  variable[284] = NEW_ReduceAction280_parser___ReduceAction280___init(); /*new ReduceAction280*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[284]) /*AbstractArray::add*/;
-  variable[285] = NEW_ReduceAction281_parser___ReduceAction281___init(); /*new ReduceAction281*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[285]) /*AbstractArray::add*/;
-  variable[286] = NEW_ReduceAction282_parser___ReduceAction282___init(); /*new ReduceAction282*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[286]) /*AbstractArray::add*/;
-  variable[287] = NEW_ReduceAction283_parser___ReduceAction283___init(); /*new ReduceAction283*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[287]) /*AbstractArray::add*/;
-  variable[288] = NEW_ReduceAction284_parser___ReduceAction284___init(); /*new ReduceAction284*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[288]) /*AbstractArray::add*/;
-  variable[289] = NEW_ReduceAction285_parser___ReduceAction285___init(); /*new ReduceAction285*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[289]) /*AbstractArray::add*/;
-  variable[290] = NEW_ReduceAction286_parser___ReduceAction286___init(); /*new ReduceAction286*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[290]) /*AbstractArray::add*/;
-  variable[291] = NEW_ReduceAction287_parser___ReduceAction287___init(); /*new ReduceAction287*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[291]) /*AbstractArray::add*/;
-  variable[292] = NEW_ReduceAction288_parser___ReduceAction288___init(); /*new ReduceAction288*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[292]) /*AbstractArray::add*/;
-  variable[293] = NEW_ReduceAction289_parser___ReduceAction289___init(); /*new ReduceAction289*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[293]) /*AbstractArray::add*/;
-  variable[294] = NEW_ReduceAction290_parser___ReduceAction290___init(); /*new ReduceAction290*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[294]) /*AbstractArray::add*/;
-  variable[295] = NEW_ReduceAction291_parser___ReduceAction291___init(); /*new ReduceAction291*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[295]) /*AbstractArray::add*/;
-  variable[296] = NEW_ReduceAction292_parser___ReduceAction292___init(); /*new ReduceAction292*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[296]) /*AbstractArray::add*/;
-  variable[297] = NEW_ReduceAction293_parser___ReduceAction293___init(); /*new ReduceAction293*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[297]) /*AbstractArray::add*/;
-  variable[298] = NEW_ReduceAction294_parser___ReduceAction294___init(); /*new ReduceAction294*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[298]) /*AbstractArray::add*/;
-  variable[299] = NEW_ReduceAction295_parser___ReduceAction295___init(); /*new ReduceAction295*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[299]) /*AbstractArray::add*/;
-  variable[300] = NEW_ReduceAction296_parser___ReduceAction296___init(); /*new ReduceAction296*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[300]) /*AbstractArray::add*/;
-  variable[301] = NEW_ReduceAction297_parser___ReduceAction297___init(); /*new ReduceAction297*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[301]) /*AbstractArray::add*/;
-  variable[302] = NEW_ReduceAction298_parser___ReduceAction298___init(); /*new ReduceAction298*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[302]) /*AbstractArray::add*/;
-  variable[303] = NEW_ReduceAction299_parser___ReduceAction299___init(); /*new ReduceAction299*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[303]) /*AbstractArray::add*/;
-  variable[304] = NEW_ReduceAction300_parser___ReduceAction300___init(); /*new ReduceAction300*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[304]) /*AbstractArray::add*/;
-  variable[305] = NEW_ReduceAction301_parser___ReduceAction301___init(); /*new ReduceAction301*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[305]) /*AbstractArray::add*/;
-  variable[306] = NEW_ReduceAction302_parser___ReduceAction302___init(); /*new ReduceAction302*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[306]) /*AbstractArray::add*/;
-  variable[307] = NEW_ReduceAction303_parser___ReduceAction303___init(); /*new ReduceAction303*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[307]) /*AbstractArray::add*/;
-  variable[308] = NEW_ReduceAction304_parser___ReduceAction304___init(); /*new ReduceAction304*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[308]) /*AbstractArray::add*/;
-  variable[309] = NEW_ReduceAction305_parser___ReduceAction305___init(); /*new ReduceAction305*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[309]) /*AbstractArray::add*/;
-  variable[310] = NEW_ReduceAction306_parser___ReduceAction306___init(); /*new ReduceAction306*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[310]) /*AbstractArray::add*/;
-  variable[311] = NEW_ReduceAction307_parser___ReduceAction307___init(); /*new ReduceAction307*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[311]) /*AbstractArray::add*/;
-  variable[312] = NEW_ReduceAction308_parser___ReduceAction308___init(); /*new ReduceAction308*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[312]) /*AbstractArray::add*/;
-  variable[313] = NEW_ReduceAction309_parser___ReduceAction309___init(); /*new ReduceAction309*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[313]) /*AbstractArray::add*/;
-  variable[314] = NEW_ReduceAction310_parser___ReduceAction310___init(); /*new ReduceAction310*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[314]) /*AbstractArray::add*/;
-  variable[315] = NEW_ReduceAction311_parser___ReduceAction311___init(); /*new ReduceAction311*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[315]) /*AbstractArray::add*/;
-  variable[316] = NEW_ReduceAction312_parser___ReduceAction312___init(); /*new ReduceAction312*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[316]) /*AbstractArray::add*/;
-  variable[317] = NEW_ReduceAction313_parser___ReduceAction313___init(); /*new ReduceAction313*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[317]) /*AbstractArray::add*/;
-  variable[318] = NEW_ReduceAction314_parser___ReduceAction314___init(); /*new ReduceAction314*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[318]) /*AbstractArray::add*/;
-  variable[319] = NEW_ReduceAction315_parser___ReduceAction315___init(); /*new ReduceAction315*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[319]) /*AbstractArray::add*/;
-  variable[320] = NEW_ReduceAction316_parser___ReduceAction316___init(); /*new ReduceAction316*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[320]) /*AbstractArray::add*/;
-  variable[321] = NEW_ReduceAction317_parser___ReduceAction317___init(); /*new ReduceAction317*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[321]) /*AbstractArray::add*/;
-  variable[322] = NEW_ReduceAction318_parser___ReduceAction318___init(); /*new ReduceAction318*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[322]) /*AbstractArray::add*/;
-  variable[323] = NEW_ReduceAction319_parser___ReduceAction319___init(); /*new ReduceAction319*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[323]) /*AbstractArray::add*/;
-  variable[324] = NEW_ReduceAction320_parser___ReduceAction320___init(); /*new ReduceAction320*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[324]) /*AbstractArray::add*/;
-  variable[325] = NEW_ReduceAction321_parser___ReduceAction321___init(); /*new ReduceAction321*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[325]) /*AbstractArray::add*/;
-  variable[326] = NEW_ReduceAction322_parser___ReduceAction322___init(); /*new ReduceAction322*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[326]) /*AbstractArray::add*/;
-  variable[327] = NEW_ReduceAction323_parser___ReduceAction323___init(); /*new ReduceAction323*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[327]) /*AbstractArray::add*/;
-  variable[328] = NEW_ReduceAction324_parser___ReduceAction324___init(); /*new ReduceAction324*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[328]) /*AbstractArray::add*/;
-  variable[329] = NEW_ReduceAction325_parser___ReduceAction325___init(); /*new ReduceAction325*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[329]) /*AbstractArray::add*/;
-  variable[330] = NEW_ReduceAction326_parser___ReduceAction326___init(); /*new ReduceAction326*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[330]) /*AbstractArray::add*/;
-  variable[331] = NEW_ReduceAction327_parser___ReduceAction327___init(); /*new ReduceAction327*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[331]) /*AbstractArray::add*/;
-  variable[332] = NEW_ReduceAction328_parser___ReduceAction328___init(); /*new ReduceAction328*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[332]) /*AbstractArray::add*/;
-  variable[333] = NEW_ReduceAction329_parser___ReduceAction329___init(); /*new ReduceAction329*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[333]) /*AbstractArray::add*/;
-  variable[334] = NEW_ReduceAction330_parser___ReduceAction330___init(); /*new ReduceAction330*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[334]) /*AbstractArray::add*/;
-  variable[335] = NEW_ReduceAction331_parser___ReduceAction331___init(); /*new ReduceAction331*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[335]) /*AbstractArray::add*/;
-  variable[336] = NEW_ReduceAction332_parser___ReduceAction332___init(); /*new ReduceAction332*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[336]) /*AbstractArray::add*/;
-  variable[337] = NEW_ReduceAction333_parser___ReduceAction333___init(); /*new ReduceAction333*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[337]) /*AbstractArray::add*/;
-  variable[338] = NEW_ReduceAction334_parser___ReduceAction334___init(); /*new ReduceAction334*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[338]) /*AbstractArray::add*/;
-  variable[339] = NEW_ReduceAction335_parser___ReduceAction335___init(); /*new ReduceAction335*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[339]) /*AbstractArray::add*/;
-  variable[340] = NEW_ReduceAction336_parser___ReduceAction336___init(); /*new ReduceAction336*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[340]) /*AbstractArray::add*/;
-  variable[341] = NEW_ReduceAction337_parser___ReduceAction337___init(); /*new ReduceAction337*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[341]) /*AbstractArray::add*/;
-  variable[342] = NEW_ReduceAction338_parser___ReduceAction338___init(); /*new ReduceAction338*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[342]) /*AbstractArray::add*/;
-  variable[343] = NEW_ReduceAction339_parser___ReduceAction339___init(); /*new ReduceAction339*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[343]) /*AbstractArray::add*/;
-  variable[344] = NEW_ReduceAction340_parser___ReduceAction340___init(); /*new ReduceAction340*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[344]) /*AbstractArray::add*/;
-  variable[345] = NEW_ReduceAction341_parser___ReduceAction341___init(); /*new ReduceAction341*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[345]) /*AbstractArray::add*/;
-  variable[346] = NEW_ReduceAction342_parser___ReduceAction342___init(); /*new ReduceAction342*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[346]) /*AbstractArray::add*/;
-  variable[347] = NEW_ReduceAction343_parser___ReduceAction343___init(); /*new ReduceAction343*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[347]) /*AbstractArray::add*/;
-  variable[348] = NEW_ReduceAction344_parser___ReduceAction344___init(); /*new ReduceAction344*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[348]) /*AbstractArray::add*/;
-  variable[349] = NEW_ReduceAction345_parser___ReduceAction345___init(); /*new ReduceAction345*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[349]) /*AbstractArray::add*/;
-  variable[350] = NEW_ReduceAction346_parser___ReduceAction346___init(); /*new ReduceAction346*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[350]) /*AbstractArray::add*/;
-  variable[351] = NEW_ReduceAction347_parser___ReduceAction347___init(); /*new ReduceAction347*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[351]) /*AbstractArray::add*/;
-  variable[352] = NEW_ReduceAction348_parser___ReduceAction348___init(); /*new ReduceAction348*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[352]) /*AbstractArray::add*/;
-  variable[353] = NEW_ReduceAction349_parser___ReduceAction349___init(); /*new ReduceAction349*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[353]) /*AbstractArray::add*/;
-  variable[354] = NEW_ReduceAction350_parser___ReduceAction350___init(); /*new ReduceAction350*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[354]) /*AbstractArray::add*/;
-  variable[355] = NEW_ReduceAction351_parser___ReduceAction351___init(); /*new ReduceAction351*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[355]) /*AbstractArray::add*/;
-  variable[356] = NEW_ReduceAction352_parser___ReduceAction352___init(); /*new ReduceAction352*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[356]) /*AbstractArray::add*/;
-  variable[357] = NEW_ReduceAction353_parser___ReduceAction353___init(); /*new ReduceAction353*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[357]) /*AbstractArray::add*/;
-  variable[358] = NEW_ReduceAction354_parser___ReduceAction354___init(); /*new ReduceAction354*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[358]) /*AbstractArray::add*/;
-  variable[359] = NEW_ReduceAction355_parser___ReduceAction355___init(); /*new ReduceAction355*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[359]) /*AbstractArray::add*/;
-  variable[360] = NEW_ReduceAction356_parser___ReduceAction356___init(); /*new ReduceAction356*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[360]) /*AbstractArray::add*/;
-  variable[361] = NEW_ReduceAction357_parser___ReduceAction357___init(); /*new ReduceAction357*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[361]) /*AbstractArray::add*/;
-  variable[362] = NEW_ReduceAction358_parser___ReduceAction358___init(); /*new ReduceAction358*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[362]) /*AbstractArray::add*/;
-  variable[363] = NEW_ReduceAction359_parser___ReduceAction359___init(); /*new ReduceAction359*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[363]) /*AbstractArray::add*/;
-  variable[364] = NEW_ReduceAction360_parser___ReduceAction360___init(); /*new ReduceAction360*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[364]) /*AbstractArray::add*/;
-  variable[365] = NEW_ReduceAction361_parser___ReduceAction361___init(); /*new ReduceAction361*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[365]) /*AbstractArray::add*/;
-  variable[366] = NEW_ReduceAction362_parser___ReduceAction362___init(); /*new ReduceAction362*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[366]) /*AbstractArray::add*/;
-  variable[367] = NEW_ReduceAction363_parser___ReduceAction363___init(); /*new ReduceAction363*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[367]) /*AbstractArray::add*/;
-  variable[368] = NEW_ReduceAction364_parser___ReduceAction364___init(); /*new ReduceAction364*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[368]) /*AbstractArray::add*/;
-  variable[369] = NEW_ReduceAction365_parser___ReduceAction365___init(); /*new ReduceAction365*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[369]) /*AbstractArray::add*/;
-  variable[370] = NEW_ReduceAction366_parser___ReduceAction366___init(); /*new ReduceAction366*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[370]) /*AbstractArray::add*/;
-  variable[371] = NEW_ReduceAction367_parser___ReduceAction367___init(); /*new ReduceAction367*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[371]) /*AbstractArray::add*/;
-  variable[372] = NEW_ReduceAction368_parser___ReduceAction368___init(); /*new ReduceAction368*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[372]) /*AbstractArray::add*/;
-  variable[373] = NEW_ReduceAction369_parser___ReduceAction369___init(); /*new ReduceAction369*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[373]) /*AbstractArray::add*/;
-  variable[374] = NEW_ReduceAction370_parser___ReduceAction370___init(); /*new ReduceAction370*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[374]) /*AbstractArray::add*/;
-  variable[375] = NEW_ReduceAction371_parser___ReduceAction371___init(); /*new ReduceAction371*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[375]) /*AbstractArray::add*/;
-  variable[376] = NEW_ReduceAction372_parser___ReduceAction372___init(); /*new ReduceAction372*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[376]) /*AbstractArray::add*/;
-  variable[377] = NEW_ReduceAction373_parser___ReduceAction373___init(); /*new ReduceAction373*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[377]) /*AbstractArray::add*/;
-  variable[378] = NEW_ReduceAction374_parser___ReduceAction374___init(); /*new ReduceAction374*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[378]) /*AbstractArray::add*/;
-  variable[379] = NEW_ReduceAction375_parser___ReduceAction375___init(); /*new ReduceAction375*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[379]) /*AbstractArray::add*/;
-  variable[380] = NEW_ReduceAction376_parser___ReduceAction376___init(); /*new ReduceAction376*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[380]) /*AbstractArray::add*/;
-  variable[381] = NEW_ReduceAction377_parser___ReduceAction377___init(); /*new ReduceAction377*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[381]) /*AbstractArray::add*/;
-  variable[382] = NEW_ReduceAction378_parser___ReduceAction378___init(); /*new ReduceAction378*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[382]) /*AbstractArray::add*/;
-  variable[383] = NEW_ReduceAction379_parser___ReduceAction379___init(); /*new ReduceAction379*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[383]) /*AbstractArray::add*/;
-  variable[384] = NEW_ReduceAction380_parser___ReduceAction380___init(); /*new ReduceAction380*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[384]) /*AbstractArray::add*/;
-  variable[385] = NEW_ReduceAction381_parser___ReduceAction381___init(); /*new ReduceAction381*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[385]) /*AbstractArray::add*/;
-  variable[386] = NEW_ReduceAction382_parser___ReduceAction382___init(); /*new ReduceAction382*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[386]) /*AbstractArray::add*/;
-  variable[387] = NEW_ReduceAction383_parser___ReduceAction383___init(); /*new ReduceAction383*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[387]) /*AbstractArray::add*/;
-  variable[388] = NEW_ReduceAction384_parser___ReduceAction384___init(); /*new ReduceAction384*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[388]) /*AbstractArray::add*/;
-  variable[389] = NEW_ReduceAction385_parser___ReduceAction385___init(); /*new ReduceAction385*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[389]) /*AbstractArray::add*/;
-  variable[390] = NEW_ReduceAction386_parser___ReduceAction386___init(); /*new ReduceAction386*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[390]) /*AbstractArray::add*/;
-  variable[391] = NEW_ReduceAction387_parser___ReduceAction387___init(); /*new ReduceAction387*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[391]) /*AbstractArray::add*/;
-  variable[392] = NEW_ReduceAction388_parser___ReduceAction388___init(); /*new ReduceAction388*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[392]) /*AbstractArray::add*/;
-  variable[393] = NEW_ReduceAction389_parser___ReduceAction389___init(); /*new ReduceAction389*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[393]) /*AbstractArray::add*/;
-  variable[394] = NEW_ReduceAction390_parser___ReduceAction390___init(); /*new ReduceAction390*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[394]) /*AbstractArray::add*/;
-  variable[395] = NEW_ReduceAction391_parser___ReduceAction391___init(); /*new ReduceAction391*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[395]) /*AbstractArray::add*/;
-  variable[396] = NEW_ReduceAction392_parser___ReduceAction392___init(); /*new ReduceAction392*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[396]) /*AbstractArray::add*/;
-  variable[397] = NEW_ReduceAction393_parser___ReduceAction393___init(); /*new ReduceAction393*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[397]) /*AbstractArray::add*/;
-  variable[398] = NEW_ReduceAction394_parser___ReduceAction394___init(); /*new ReduceAction394*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[398]) /*AbstractArray::add*/;
-  variable[399] = NEW_ReduceAction395_parser___ReduceAction395___init(); /*new ReduceAction395*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[399]) /*AbstractArray::add*/;
-  variable[400] = NEW_ReduceAction396_parser___ReduceAction396___init(); /*new ReduceAction396*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[400]) /*AbstractArray::add*/;
-  variable[401] = NEW_ReduceAction397_parser___ReduceAction397___init(); /*new ReduceAction397*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[401]) /*AbstractArray::add*/;
-  variable[402] = NEW_ReduceAction398_parser___ReduceAction398___init(); /*new ReduceAction398*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[402]) /*AbstractArray::add*/;
-  variable[403] = NEW_ReduceAction399_parser___ReduceAction399___init(); /*new ReduceAction399*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[403]) /*AbstractArray::add*/;
-  variable[404] = NEW_ReduceAction400_parser___ReduceAction400___init(); /*new ReduceAction400*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[404]) /*AbstractArray::add*/;
-  variable[405] = NEW_ReduceAction401_parser___ReduceAction401___init(); /*new ReduceAction401*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[405]) /*AbstractArray::add*/;
-  variable[406] = NEW_ReduceAction402_parser___ReduceAction402___init(); /*new ReduceAction402*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[406]) /*AbstractArray::add*/;
-  variable[407] = NEW_ReduceAction403_parser___ReduceAction403___init(); /*new ReduceAction403*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[407]) /*AbstractArray::add*/;
-  variable[408] = NEW_ReduceAction404_parser___ReduceAction404___init(); /*new ReduceAction404*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[408]) /*AbstractArray::add*/;
-  variable[409] = NEW_ReduceAction405_parser___ReduceAction405___init(); /*new ReduceAction405*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[409]) /*AbstractArray::add*/;
-  variable[410] = NEW_ReduceAction406_parser___ReduceAction406___init(); /*new ReduceAction406*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[410]) /*AbstractArray::add*/;
-  variable[411] = NEW_ReduceAction407_parser___ReduceAction407___init(); /*new ReduceAction407*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[411]) /*AbstractArray::add*/;
-  variable[412] = NEW_ReduceAction408_parser___ReduceAction408___init(); /*new ReduceAction408*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[412]) /*AbstractArray::add*/;
-  variable[413] = NEW_ReduceAction409_parser___ReduceAction409___init(); /*new ReduceAction409*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[413]) /*AbstractArray::add*/;
-  variable[414] = NEW_ReduceAction410_parser___ReduceAction410___init(); /*new ReduceAction410*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[414]) /*AbstractArray::add*/;
-  variable[415] = NEW_ReduceAction411_parser___ReduceAction411___init(); /*new ReduceAction411*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[415]) /*AbstractArray::add*/;
-  variable[416] = NEW_ReduceAction412_parser___ReduceAction412___init(); /*new ReduceAction412*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[416]) /*AbstractArray::add*/;
-  variable[417] = NEW_ReduceAction413_parser___ReduceAction413___init(); /*new ReduceAction413*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[417]) /*AbstractArray::add*/;
-  variable[418] = NEW_ReduceAction414_parser___ReduceAction414___init(); /*new ReduceAction414*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[418]) /*AbstractArray::add*/;
-  variable[419] = NEW_ReduceAction415_parser___ReduceAction415___init(); /*new ReduceAction415*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[419]) /*AbstractArray::add*/;
-  variable[420] = NEW_ReduceAction416_parser___ReduceAction416___init(); /*new ReduceAction416*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[420]) /*AbstractArray::add*/;
-  variable[421] = NEW_ReduceAction417_parser___ReduceAction417___init(); /*new ReduceAction417*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[421]) /*AbstractArray::add*/;
-  variable[422] = NEW_ReduceAction418_parser___ReduceAction418___init(); /*new ReduceAction418*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[422]) /*AbstractArray::add*/;
-  variable[423] = NEW_ReduceAction419_parser___ReduceAction419___init(); /*new ReduceAction419*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[423]) /*AbstractArray::add*/;
-  variable[424] = NEW_ReduceAction420_parser___ReduceAction420___init(); /*new ReduceAction420*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[424]) /*AbstractArray::add*/;
-  variable[425] = NEW_ReduceAction421_parser___ReduceAction421___init(); /*new ReduceAction421*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[425]) /*AbstractArray::add*/;
-  variable[426] = NEW_ReduceAction422_parser___ReduceAction422___init(); /*new ReduceAction422*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[426]) /*AbstractArray::add*/;
-  variable[427] = NEW_ReduceAction423_parser___ReduceAction423___init(); /*new ReduceAction423*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[427]) /*AbstractArray::add*/;
-  variable[428] = NEW_ReduceAction424_parser___ReduceAction424___init(); /*new ReduceAction424*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[428]) /*AbstractArray::add*/;
-  variable[429] = NEW_ReduceAction425_parser___ReduceAction425___init(); /*new ReduceAction425*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[429]) /*AbstractArray::add*/;
-  variable[430] = NEW_ReduceAction426_parser___ReduceAction426___init(); /*new ReduceAction426*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[430]) /*AbstractArray::add*/;
-  variable[431] = NEW_ReduceAction427_parser___ReduceAction427___init(); /*new ReduceAction427*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[431]) /*AbstractArray::add*/;
-  variable[432] = NEW_ReduceAction428_parser___ReduceAction428___init(); /*new ReduceAction428*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[432]) /*AbstractArray::add*/;
-  variable[433] = NEW_ReduceAction429_parser___ReduceAction429___init(); /*new ReduceAction429*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[433]) /*AbstractArray::add*/;
-  variable[434] = NEW_ReduceAction430_parser___ReduceAction430___init(); /*new ReduceAction430*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[434]) /*AbstractArray::add*/;
-  variable[435] = NEW_ReduceAction431_parser___ReduceAction431___init(); /*new ReduceAction431*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[435]) /*AbstractArray::add*/;
-  variable[436] = NEW_ReduceAction432_parser___ReduceAction432___init(); /*new ReduceAction432*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[436]) /*AbstractArray::add*/;
-  variable[437] = NEW_ReduceAction433_parser___ReduceAction433___init(); /*new ReduceAction433*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[437]) /*AbstractArray::add*/;
-  variable[438] = NEW_ReduceAction434_parser___ReduceAction434___init(); /*new ReduceAction434*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[438]) /*AbstractArray::add*/;
-  variable[439] = NEW_ReduceAction435_parser___ReduceAction435___init(); /*new ReduceAction435*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[439]) /*AbstractArray::add*/;
-  variable[440] = NEW_ReduceAction436_parser___ReduceAction436___init(); /*new ReduceAction436*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[440]) /*AbstractArray::add*/;
-  variable[441] = NEW_ReduceAction437_parser___ReduceAction437___init(); /*new ReduceAction437*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[441]) /*AbstractArray::add*/;
-  variable[442] = NEW_ReduceAction438_parser___ReduceAction438___init(); /*new ReduceAction438*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[442]) /*AbstractArray::add*/;
-  variable[443] = NEW_ReduceAction439_parser___ReduceAction439___init(); /*new ReduceAction439*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[443]) /*AbstractArray::add*/;
-  variable[444] = NEW_ReduceAction440_parser___ReduceAction440___init(); /*new ReduceAction440*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[444]) /*AbstractArray::add*/;
-  variable[445] = NEW_ReduceAction441_parser___ReduceAction441___init(); /*new ReduceAction441*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[445]) /*AbstractArray::add*/;
-  variable[446] = NEW_ReduceAction442_parser___ReduceAction442___init(); /*new ReduceAction442*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[446]) /*AbstractArray::add*/;
-  variable[447] = NEW_ReduceAction443_parser___ReduceAction443___init(); /*new ReduceAction443*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[447]) /*AbstractArray::add*/;
-  variable[448] = NEW_ReduceAction444_parser___ReduceAction444___init(); /*new ReduceAction444*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[448]) /*AbstractArray::add*/;
-  variable[449] = NEW_ReduceAction445_parser___ReduceAction445___init(); /*new ReduceAction445*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[449]) /*AbstractArray::add*/;
-  variable[450] = NEW_ReduceAction446_parser___ReduceAction446___init(); /*new ReduceAction446*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[450]) /*AbstractArray::add*/;
-  variable[451] = NEW_ReduceAction447_parser___ReduceAction447___init(); /*new ReduceAction447*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[451]) /*AbstractArray::add*/;
-  variable[452] = NEW_ReduceAction448_parser___ReduceAction448___init(); /*new ReduceAction448*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[452]) /*AbstractArray::add*/;
-  variable[453] = NEW_ReduceAction449_parser___ReduceAction449___init(); /*new ReduceAction449*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[453]) /*AbstractArray::add*/;
-  variable[454] = NEW_ReduceAction450_parser___ReduceAction450___init(); /*new ReduceAction450*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[454]) /*AbstractArray::add*/;
-  variable[455] = NEW_ReduceAction451_parser___ReduceAction451___init(); /*new ReduceAction451*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[455]) /*AbstractArray::add*/;
-  variable[456] = NEW_ReduceAction452_parser___ReduceAction452___init(); /*new ReduceAction452*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[456]) /*AbstractArray::add*/;
-  variable[457] = NEW_ReduceAction453_parser___ReduceAction453___init(); /*new ReduceAction453*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[457]) /*AbstractArray::add*/;
-  variable[458] = NEW_ReduceAction454_parser___ReduceAction454___init(); /*new ReduceAction454*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[458]) /*AbstractArray::add*/;
-  variable[459] = NEW_ReduceAction455_parser___ReduceAction455___init(); /*new ReduceAction455*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[459]) /*AbstractArray::add*/;
-  variable[460] = NEW_ReduceAction456_parser___ReduceAction456___init(); /*new ReduceAction456*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[460]) /*AbstractArray::add*/;
-  variable[461] = NEW_ReduceAction457_parser___ReduceAction457___init(); /*new ReduceAction457*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[461]) /*AbstractArray::add*/;
-  variable[462] = NEW_ReduceAction458_parser___ReduceAction458___init(); /*new ReduceAction458*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[462]) /*AbstractArray::add*/;
-  variable[463] = NEW_ReduceAction459_parser___ReduceAction459___init(); /*new ReduceAction459*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[463]) /*AbstractArray::add*/;
-  variable[464] = NEW_ReduceAction460_parser___ReduceAction460___init(); /*new ReduceAction460*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[464]) /*AbstractArray::add*/;
-  variable[465] = NEW_ReduceAction461_parser___ReduceAction461___init(); /*new ReduceAction461*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[465]) /*AbstractArray::add*/;
-  variable[466] = NEW_ReduceAction462_parser___ReduceAction462___init(); /*new ReduceAction462*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[466]) /*AbstractArray::add*/;
-  variable[467] = NEW_ReduceAction463_parser___ReduceAction463___init(); /*new ReduceAction463*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[467]) /*AbstractArray::add*/;
-  variable[468] = NEW_ReduceAction464_parser___ReduceAction464___init(); /*new ReduceAction464*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[468]) /*AbstractArray::add*/;
-  variable[469] = NEW_ReduceAction465_parser___ReduceAction465___init(); /*new ReduceAction465*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[469]) /*AbstractArray::add*/;
-  variable[470] = NEW_ReduceAction466_parser___ReduceAction466___init(); /*new ReduceAction466*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[470]) /*AbstractArray::add*/;
-  variable[471] = NEW_ReduceAction467_parser___ReduceAction467___init(); /*new ReduceAction467*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[471]) /*AbstractArray::add*/;
-  variable[472] = NEW_ReduceAction468_parser___ReduceAction468___init(); /*new ReduceAction468*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[472]) /*AbstractArray::add*/;
-  variable[473] = NEW_ReduceAction469_parser___ReduceAction469___init(); /*new ReduceAction469*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[473]) /*AbstractArray::add*/;
-  variable[474] = NEW_ReduceAction470_parser___ReduceAction470___init(); /*new ReduceAction470*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[474]) /*AbstractArray::add*/;
-  variable[475] = NEW_ReduceAction471_parser___ReduceAction471___init(); /*new ReduceAction471*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[475]) /*AbstractArray::add*/;
-  variable[476] = NEW_ReduceAction472_parser___ReduceAction472___init(); /*new ReduceAction472*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[476]) /*AbstractArray::add*/;
-  variable[477] = NEW_ReduceAction473_parser___ReduceAction473___init(); /*new ReduceAction473*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[477]) /*AbstractArray::add*/;
-  variable[478] = NEW_ReduceAction474_parser___ReduceAction474___init(); /*new ReduceAction474*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[478]) /*AbstractArray::add*/;
-  variable[479] = NEW_ReduceAction475_parser___ReduceAction475___init(); /*new ReduceAction475*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[479]) /*AbstractArray::add*/;
-  variable[480] = NEW_ReduceAction476_parser___ReduceAction476___init(); /*new ReduceAction476*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[480]) /*AbstractArray::add*/;
-  variable[481] = NEW_ReduceAction477_parser___ReduceAction477___init(); /*new ReduceAction477*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[481]) /*AbstractArray::add*/;
-  variable[482] = NEW_ReduceAction478_parser___ReduceAction478___init(); /*new ReduceAction478*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[482]) /*AbstractArray::add*/;
-  variable[483] = NEW_ReduceAction479_parser___ReduceAction479___init(); /*new ReduceAction479*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[483]) /*AbstractArray::add*/;
-  variable[484] = NEW_ReduceAction480_parser___ReduceAction480___init(); /*new ReduceAction480*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[484]) /*AbstractArray::add*/;
-  variable[485] = NEW_ReduceAction481_parser___ReduceAction481___init(); /*new ReduceAction481*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[485]) /*AbstractArray::add*/;
-  variable[486] = NEW_ReduceAction482_parser___ReduceAction482___init(); /*new ReduceAction482*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[486]) /*AbstractArray::add*/;
-  variable[487] = NEW_ReduceAction483_parser___ReduceAction483___init(); /*new ReduceAction483*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[487]) /*AbstractArray::add*/;
-  variable[488] = NEW_ReduceAction484_parser___ReduceAction484___init(); /*new ReduceAction484*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[488]) /*AbstractArray::add*/;
-  variable[489] = NEW_ReduceAction485_parser___ReduceAction485___init(); /*new ReduceAction485*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[489]) /*AbstractArray::add*/;
-  variable[490] = NEW_ReduceAction486_parser___ReduceAction486___init(); /*new ReduceAction486*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[490]) /*AbstractArray::add*/;
-  variable[491] = NEW_ReduceAction487_parser___ReduceAction487___init(); /*new ReduceAction487*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[491]) /*AbstractArray::add*/;
-  variable[492] = NEW_ReduceAction488_parser___ReduceAction488___init(); /*new ReduceAction488*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[492]) /*AbstractArray::add*/;
-  variable[493] = NEW_ReduceAction489_parser___ReduceAction489___init(); /*new ReduceAction489*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[493]) /*AbstractArray::add*/;
-  variable[494] = NEW_ReduceAction490_parser___ReduceAction490___init(); /*new ReduceAction490*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[494]) /*AbstractArray::add*/;
-  variable[495] = NEW_ReduceAction491_parser___ReduceAction491___init(); /*new ReduceAction491*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[495]) /*AbstractArray::add*/;
-  variable[496] = NEW_ReduceAction492_parser___ReduceAction492___init(); /*new ReduceAction492*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[496]) /*AbstractArray::add*/;
-  variable[497] = NEW_ReduceAction493_parser___ReduceAction493___init(); /*new ReduceAction493*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[497]) /*AbstractArray::add*/;
-  variable[498] = NEW_ReduceAction494_parser___ReduceAction494___init(); /*new ReduceAction494*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[498]) /*AbstractArray::add*/;
-  variable[499] = NEW_ReduceAction495_parser___ReduceAction495___init(); /*new ReduceAction495*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[499]) /*AbstractArray::add*/;
-  variable[500] = NEW_ReduceAction496_parser___ReduceAction496___init(); /*new ReduceAction496*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[500]) /*AbstractArray::add*/;
-  variable[501] = NEW_ReduceAction497_parser___ReduceAction497___init(); /*new ReduceAction497*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[501]) /*AbstractArray::add*/;
-  variable[502] = NEW_ReduceAction498_parser___ReduceAction498___init(); /*new ReduceAction498*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[502]) /*AbstractArray::add*/;
-  variable[503] = NEW_ReduceAction499_parser___ReduceAction499___init(); /*new ReduceAction499*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[503]) /*AbstractArray::add*/;
-  variable[504] = NEW_ReduceAction500_parser___ReduceAction500___init(); /*new ReduceAction500*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[504]) /*AbstractArray::add*/;
-  variable[505] = NEW_ReduceAction501_parser___ReduceAction501___init(); /*new ReduceAction501*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[505]) /*AbstractArray::add*/;
-  variable[506] = NEW_ReduceAction502_parser___ReduceAction502___init(); /*new ReduceAction502*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[506]) /*AbstractArray::add*/;
-  variable[507] = NEW_ReduceAction503_parser___ReduceAction503___init(); /*new ReduceAction503*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[507]) /*AbstractArray::add*/;
-  variable[508] = NEW_ReduceAction504_parser___ReduceAction504___init(); /*new ReduceAction504*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[508]) /*AbstractArray::add*/;
-  variable[509] = NEW_ReduceAction505_parser___ReduceAction505___init(); /*new ReduceAction505*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[509]) /*AbstractArray::add*/;
-  variable[510] = NEW_ReduceAction506_parser___ReduceAction506___init(); /*new ReduceAction506*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[510]) /*AbstractArray::add*/;
-  variable[511] = NEW_ReduceAction507_parser___ReduceAction507___init(); /*new ReduceAction507*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[511]) /*AbstractArray::add*/;
-  variable[512] = NEW_ReduceAction508_parser___ReduceAction508___init(); /*new ReduceAction508*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[512]) /*AbstractArray::add*/;
-  variable[513] = NEW_ReduceAction509_parser___ReduceAction509___init(); /*new ReduceAction509*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[513]) /*AbstractArray::add*/;
-  variable[514] = NEW_ReduceAction510_parser___ReduceAction510___init(); /*new ReduceAction510*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[514]) /*AbstractArray::add*/;
-  variable[515] = NEW_ReduceAction511_parser___ReduceAction511___init(); /*new ReduceAction511*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[515]) /*AbstractArray::add*/;
-  variable[516] = NEW_ReduceAction512_parser___ReduceAction512___init(); /*new ReduceAction512*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[516]) /*AbstractArray::add*/;
-  variable[517] = NEW_ReduceAction513_parser___ReduceAction513___init(); /*new ReduceAction513*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[517]) /*AbstractArray::add*/;
-  variable[518] = NEW_ReduceAction514_parser___ReduceAction514___init(); /*new ReduceAction514*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[518]) /*AbstractArray::add*/;
-  variable[519] = NEW_ReduceAction515_parser___ReduceAction515___init(); /*new ReduceAction515*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[519]) /*AbstractArray::add*/;
-  variable[520] = NEW_ReduceAction516_parser___ReduceAction516___init(); /*new ReduceAction516*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[520]) /*AbstractArray::add*/;
-  variable[521] = NEW_ReduceAction517_parser___ReduceAction517___init(); /*new ReduceAction517*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[521]) /*AbstractArray::add*/;
-  variable[522] = NEW_ReduceAction518_parser___ReduceAction518___init(); /*new ReduceAction518*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[522]) /*AbstractArray::add*/;
-  variable[523] = NEW_ReduceAction519_parser___ReduceAction519___init(); /*new ReduceAction519*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[523]) /*AbstractArray::add*/;
-  variable[524] = NEW_ReduceAction520_parser___ReduceAction520___init(); /*new ReduceAction520*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[524]) /*AbstractArray::add*/;
-  variable[525] = NEW_ReduceAction521_parser___ReduceAction521___init(); /*new ReduceAction521*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[525]) /*AbstractArray::add*/;
-  variable[526] = NEW_ReduceAction522_parser___ReduceAction522___init(); /*new ReduceAction522*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[526]) /*AbstractArray::add*/;
-  variable[527] = NEW_ReduceAction523_parser___ReduceAction523___init(); /*new ReduceAction523*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[527]) /*AbstractArray::add*/;
-  variable[528] = NEW_ReduceAction524_parser___ReduceAction524___init(); /*new ReduceAction524*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[528]) /*AbstractArray::add*/;
-  variable[529] = NEW_ReduceAction525_parser___ReduceAction525___init(); /*new ReduceAction525*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[529]) /*AbstractArray::add*/;
-  variable[530] = NEW_ReduceAction526_parser___ReduceAction526___init(); /*new ReduceAction526*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[530]) /*AbstractArray::add*/;
-  variable[531] = NEW_ReduceAction527_parser___ReduceAction527___init(); /*new ReduceAction527*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[531]) /*AbstractArray::add*/;
-  variable[532] = NEW_ReduceAction528_parser___ReduceAction528___init(); /*new ReduceAction528*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[532]) /*AbstractArray::add*/;
-  variable[533] = NEW_ReduceAction529_parser___ReduceAction529___init(); /*new ReduceAction529*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[533]) /*AbstractArray::add*/;
-  variable[534] = NEW_ReduceAction530_parser___ReduceAction530___init(); /*new ReduceAction530*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[534]) /*AbstractArray::add*/;
-  variable[535] = NEW_ReduceAction531_parser___ReduceAction531___init(); /*new ReduceAction531*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[535]) /*AbstractArray::add*/;
-  variable[536] = NEW_ReduceAction532_parser___ReduceAction532___init(); /*new ReduceAction532*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[536]) /*AbstractArray::add*/;
-  variable[537] = NEW_ReduceAction533_parser___ReduceAction533___init(); /*new ReduceAction533*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[537]) /*AbstractArray::add*/;
-  variable[538] = NEW_ReduceAction534_parser___ReduceAction534___init(); /*new ReduceAction534*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[538]) /*AbstractArray::add*/;
-  variable[539] = NEW_ReduceAction535_parser___ReduceAction535___init(); /*new ReduceAction535*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[539]) /*AbstractArray::add*/;
-  variable[540] = NEW_ReduceAction536_parser___ReduceAction536___init(); /*new ReduceAction536*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[540]) /*AbstractArray::add*/;
-  variable[541] = NEW_ReduceAction537_parser___ReduceAction537___init(); /*new ReduceAction537*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[541]) /*AbstractArray::add*/;
-  variable[542] = NEW_ReduceAction538_parser___ReduceAction538___init(); /*new ReduceAction538*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[542]) /*AbstractArray::add*/;
-  variable[543] = NEW_ReduceAction539_parser___ReduceAction539___init(); /*new ReduceAction539*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[543]) /*AbstractArray::add*/;
-  variable[544] = NEW_ReduceAction540_parser___ReduceAction540___init(); /*new ReduceAction540*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[544]) /*AbstractArray::add*/;
-  variable[545] = NEW_ReduceAction541_parser___ReduceAction541___init(); /*new ReduceAction541*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[545]) /*AbstractArray::add*/;
-  variable[546] = NEW_ReduceAction542_parser___ReduceAction542___init(); /*new ReduceAction542*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[546]) /*AbstractArray::add*/;
-  variable[547] = NEW_ReduceAction543_parser___ReduceAction543___init(); /*new ReduceAction543*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[547]) /*AbstractArray::add*/;
-  variable[548] = NEW_ReduceAction544_parser___ReduceAction544___init(); /*new ReduceAction544*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[548]) /*AbstractArray::add*/;
-  variable[549] = NEW_ReduceAction545_parser___ReduceAction545___init(); /*new ReduceAction545*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[549]) /*AbstractArray::add*/;
-  variable[550] = NEW_ReduceAction546_parser___ReduceAction546___init(); /*new ReduceAction546*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[550]) /*AbstractArray::add*/;
-  variable[551] = NEW_ReduceAction547_parser___ReduceAction547___init(); /*new ReduceAction547*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[551]) /*AbstractArray::add*/;
-  variable[552] = NEW_ReduceAction548_parser___ReduceAction548___init(); /*new ReduceAction548*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[552]) /*AbstractArray::add*/;
-  variable[553] = NEW_ReduceAction549_parser___ReduceAction549___init(); /*new ReduceAction549*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[553]) /*AbstractArray::add*/;
-  variable[554] = NEW_ReduceAction550_parser___ReduceAction550___init(); /*new ReduceAction550*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[554]) /*AbstractArray::add*/;
-  variable[555] = NEW_ReduceAction551_parser___ReduceAction551___init(); /*new ReduceAction551*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[555]) /*AbstractArray::add*/;
-  variable[556] = NEW_ReduceAction552_parser___ReduceAction552___init(); /*new ReduceAction552*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[556]) /*AbstractArray::add*/;
-  variable[557] = NEW_ReduceAction553_parser___ReduceAction553___init(); /*new ReduceAction553*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[557]) /*AbstractArray::add*/;
-  variable[558] = NEW_ReduceAction554_parser___ReduceAction554___init(); /*new ReduceAction554*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[558]) /*AbstractArray::add*/;
-  variable[559] = NEW_ReduceAction555_parser___ReduceAction555___init(); /*new ReduceAction555*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[559]) /*AbstractArray::add*/;
-  variable[560] = NEW_ReduceAction556_parser___ReduceAction556___init(); /*new ReduceAction556*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[560]) /*AbstractArray::add*/;
-  variable[561] = NEW_ReduceAction557_parser___ReduceAction557___init(); /*new ReduceAction557*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[561]) /*AbstractArray::add*/;
-  variable[562] = NEW_ReduceAction558_parser___ReduceAction558___init(); /*new ReduceAction558*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[562]) /*AbstractArray::add*/;
-  variable[563] = NEW_ReduceAction559_parser___ReduceAction559___init(); /*new ReduceAction559*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[563]) /*AbstractArray::add*/;
-  variable[564] = NEW_ReduceAction560_parser___ReduceAction560___init(); /*new ReduceAction560*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[564]) /*AbstractArray::add*/;
-  variable[565] = NEW_ReduceAction561_parser___ReduceAction561___init(); /*new ReduceAction561*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[565]) /*AbstractArray::add*/;
-  variable[566] = NEW_ReduceAction562_parser___ReduceAction562___init(); /*new ReduceAction562*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[566]) /*AbstractArray::add*/;
-  variable[567] = NEW_ReduceAction563_parser___ReduceAction563___init(); /*new ReduceAction563*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[567]) /*AbstractArray::add*/;
-  variable[568] = NEW_ReduceAction564_parser___ReduceAction564___init(); /*new ReduceAction564*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[568]) /*AbstractArray::add*/;
-  variable[569] = NEW_ReduceAction565_parser___ReduceAction565___init(); /*new ReduceAction565*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[569]) /*AbstractArray::add*/;
-  variable[570] = NEW_ReduceAction566_parser___ReduceAction566___init(); /*new ReduceAction566*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[570]) /*AbstractArray::add*/;
-  variable[571] = NEW_ReduceAction567_parser___ReduceAction567___init(); /*new ReduceAction567*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[571]) /*AbstractArray::add*/;
-  variable[572] = NEW_ReduceAction568_parser___ReduceAction568___init(); /*new ReduceAction568*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[572]) /*AbstractArray::add*/;
-  variable[573] = NEW_ReduceAction569_parser___ReduceAction569___init(); /*new ReduceAction569*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[573]) /*AbstractArray::add*/;
-  variable[574] = NEW_ReduceAction570_parser___ReduceAction570___init(); /*new ReduceAction570*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[574]) /*AbstractArray::add*/;
-  variable[575] = NEW_ReduceAction571_parser___ReduceAction571___init(); /*new ReduceAction571*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[575]) /*AbstractArray::add*/;
-  variable[576] = NEW_ReduceAction572_parser___ReduceAction572___init(); /*new ReduceAction572*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[576]) /*AbstractArray::add*/;
-  variable[577] = NEW_ReduceAction573_parser___ReduceAction573___init(); /*new ReduceAction573*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[577]) /*AbstractArray::add*/;
-  variable[578] = NEW_ReduceAction574_parser___ReduceAction574___init(); /*new ReduceAction574*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[578]) /*AbstractArray::add*/;
-  variable[579] = NEW_ReduceAction575_parser___ReduceAction575___init(); /*new ReduceAction575*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[579]) /*AbstractArray::add*/;
-  variable[580] = NEW_ReduceAction576_parser___ReduceAction576___init(); /*new ReduceAction576*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[580]) /*AbstractArray::add*/;
-  variable[581] = NEW_ReduceAction577_parser___ReduceAction577___init(); /*new ReduceAction577*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[581]) /*AbstractArray::add*/;
-  variable[582] = NEW_ReduceAction578_parser___ReduceAction578___init(); /*new ReduceAction578*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[582]) /*AbstractArray::add*/;
-  variable[583] = NEW_ReduceAction579_parser___ReduceAction579___init(); /*new ReduceAction579*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[583]) /*AbstractArray::add*/;
-  variable[584] = NEW_ReduceAction580_parser___ReduceAction580___init(); /*new ReduceAction580*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[584]) /*AbstractArray::add*/;
-  variable[585] = NEW_ReduceAction581_parser___ReduceAction581___init(); /*new ReduceAction581*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[585]) /*AbstractArray::add*/;
-  variable[586] = NEW_ReduceAction582_parser___ReduceAction582___init(); /*new ReduceAction582*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[586]) /*AbstractArray::add*/;
-  variable[587] = NEW_ReduceAction583_parser___ReduceAction583___init(); /*new ReduceAction583*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[587]) /*AbstractArray::add*/;
-  variable[588] = NEW_ReduceAction584_parser___ReduceAction584___init(); /*new ReduceAction584*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[588]) /*AbstractArray::add*/;
-  variable[589] = NEW_ReduceAction585_parser___ReduceAction585___init(); /*new ReduceAction585*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[589]) /*AbstractArray::add*/;
-  variable[590] = NEW_ReduceAction586_parser___ReduceAction586___init(); /*new ReduceAction586*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[590]) /*AbstractArray::add*/;
-  variable[591] = NEW_ReduceAction587_parser___ReduceAction587___init(); /*new ReduceAction587*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[591]) /*AbstractArray::add*/;
-  variable[592] = NEW_ReduceAction588_parser___ReduceAction588___init(); /*new ReduceAction588*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[592]) /*AbstractArray::add*/;
-  variable[593] = NEW_ReduceAction589_parser___ReduceAction589___init(); /*new ReduceAction589*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[593]) /*AbstractArray::add*/;
-  variable[594] = NEW_ReduceAction590_parser___ReduceAction590___init(); /*new ReduceAction590*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[594]) /*AbstractArray::add*/;
-  variable[595] = NEW_ReduceAction591_parser___ReduceAction591___init(); /*new ReduceAction591*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[595]) /*AbstractArray::add*/;
-  variable[596] = NEW_ReduceAction592_parser___ReduceAction592___init(); /*new ReduceAction592*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[596]) /*AbstractArray::add*/;
-  variable[597] = NEW_ReduceAction593_parser___ReduceAction593___init(); /*new ReduceAction593*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[597]) /*AbstractArray::add*/;
-  variable[598] = NEW_ReduceAction594_parser___ReduceAction594___init(); /*new ReduceAction594*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[598]) /*AbstractArray::add*/;
-  variable[599] = NEW_ReduceAction595_parser___ReduceAction595___init(); /*new ReduceAction595*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[599]) /*AbstractArray::add*/;
-  variable[600] = NEW_ReduceAction596_parser___ReduceAction596___init(); /*new ReduceAction596*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[600]) /*AbstractArray::add*/;
-  variable[601] = NEW_ReduceAction597_parser___ReduceAction597___init(); /*new ReduceAction597*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[601]) /*AbstractArray::add*/;
-  variable[602] = NEW_ReduceAction598_parser___ReduceAction598___init(); /*new ReduceAction598*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[602]) /*AbstractArray::add*/;
-  variable[603] = NEW_ReduceAction599_parser___ReduceAction599___init(); /*new ReduceAction599*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[603]) /*AbstractArray::add*/;
-  variable[604] = NEW_ReduceAction600_parser___ReduceAction600___init(); /*new ReduceAction600*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[604]) /*AbstractArray::add*/;
-  variable[605] = NEW_ReduceAction601_parser___ReduceAction601___init(); /*new ReduceAction601*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[605]) /*AbstractArray::add*/;
-  variable[606] = NEW_ReduceAction602_parser___ReduceAction602___init(); /*new ReduceAction602*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[606]) /*AbstractArray::add*/;
-  variable[607] = NEW_ReduceAction603_parser___ReduceAction603___init(); /*new ReduceAction603*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[607]) /*AbstractArray::add*/;
-  variable[608] = NEW_ReduceAction604_parser___ReduceAction604___init(); /*new ReduceAction604*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[608]) /*AbstractArray::add*/;
-  variable[609] = NEW_ReduceAction605_parser___ReduceAction605___init(); /*new ReduceAction605*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[609]) /*AbstractArray::add*/;
-  variable[610] = NEW_ReduceAction606_parser___ReduceAction606___init(); /*new ReduceAction606*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[610]) /*AbstractArray::add*/;
-  variable[611] = NEW_ReduceAction607_parser___ReduceAction607___init(); /*new ReduceAction607*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[611]) /*AbstractArray::add*/;
-  variable[612] = NEW_ReduceAction608_parser___ReduceAction608___init(); /*new ReduceAction608*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[612]) /*AbstractArray::add*/;
-  variable[613] = NEW_ReduceAction609_parser___ReduceAction609___init(); /*new ReduceAction609*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[613]) /*AbstractArray::add*/;
-  variable[614] = NEW_ReduceAction610_parser___ReduceAction610___init(); /*new ReduceAction610*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[614]) /*AbstractArray::add*/;
-  variable[615] = NEW_ReduceAction611_parser___ReduceAction611___init(); /*new ReduceAction611*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[615]) /*AbstractArray::add*/;
-  variable[616] = NEW_ReduceAction612_parser___ReduceAction612___init(); /*new ReduceAction612*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[616]) /*AbstractArray::add*/;
-  variable[617] = NEW_ReduceAction613_parser___ReduceAction613___init(); /*new ReduceAction613*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[617]) /*AbstractArray::add*/;
-  variable[618] = NEW_ReduceAction614_parser___ReduceAction614___init(); /*new ReduceAction614*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[618]) /*AbstractArray::add*/;
-  variable[619] = NEW_ReduceAction615_parser___ReduceAction615___init(); /*new ReduceAction615*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[619]) /*AbstractArray::add*/;
-  variable[620] = NEW_ReduceAction616_parser___ReduceAction616___init(); /*new ReduceAction616*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[620]) /*AbstractArray::add*/;
-  variable[621] = NEW_ReduceAction617_parser___ReduceAction617___init(); /*new ReduceAction617*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[621]) /*AbstractArray::add*/;
-  variable[622] = NEW_ReduceAction618_parser___ReduceAction618___init(); /*new ReduceAction618*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[622]) /*AbstractArray::add*/;
-  variable[623] = NEW_ReduceAction619_parser___ReduceAction619___init(); /*new ReduceAction619*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[623]) /*AbstractArray::add*/;
-  variable[624] = NEW_ReduceAction620_parser___ReduceAction620___init(); /*new ReduceAction620*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[624]) /*AbstractArray::add*/;
-  variable[625] = NEW_ReduceAction621_parser___ReduceAction621___init(); /*new ReduceAction621*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[625]) /*AbstractArray::add*/;
-  variable[626] = NEW_ReduceAction622_parser___ReduceAction622___init(); /*new ReduceAction622*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[626]) /*AbstractArray::add*/;
-  variable[627] = NEW_ReduceAction623_parser___ReduceAction623___init(); /*new ReduceAction623*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[627]) /*AbstractArray::add*/;
-  variable[628] = NEW_ReduceAction624_parser___ReduceAction624___init(); /*new ReduceAction624*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[628]) /*AbstractArray::add*/;
-  variable[629] = NEW_ReduceAction625_parser___ReduceAction625___init(); /*new ReduceAction625*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[629]) /*AbstractArray::add*/;
-  variable[630] = NEW_ReduceAction626_parser___ReduceAction626___init(); /*new ReduceAction626*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[630]) /*AbstractArray::add*/;
-  variable[631] = NEW_ReduceAction627_parser___ReduceAction627___init(); /*new ReduceAction627*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[631]) /*AbstractArray::add*/;
-  variable[632] = NEW_ReduceAction628_parser___ReduceAction628___init(); /*new ReduceAction628*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[632]) /*AbstractArray::add*/;
-  variable[633] = NEW_ReduceAction629_parser___ReduceAction629___init(); /*new ReduceAction629*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[633]) /*AbstractArray::add*/;
-  variable[634] = NEW_ReduceAction630_parser___ReduceAction630___init(); /*new ReduceAction630*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[634]) /*AbstractArray::add*/;
-  variable[635] = NEW_ReduceAction631_parser___ReduceAction631___init(); /*new ReduceAction631*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[635]) /*AbstractArray::add*/;
-  variable[636] = NEW_ReduceAction632_parser___ReduceAction632___init(); /*new ReduceAction632*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[636]) /*AbstractArray::add*/;
-  variable[637] = NEW_ReduceAction633_parser___ReduceAction633___init(); /*new ReduceAction633*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[637]) /*AbstractArray::add*/;
-  variable[638] = NEW_ReduceAction634_parser___ReduceAction634___init(); /*new ReduceAction634*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[638]) /*AbstractArray::add*/;
-  variable[639] = NEW_ReduceAction635_parser___ReduceAction635___init(); /*new ReduceAction635*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[639]) /*AbstractArray::add*/;
-  variable[640] = NEW_ReduceAction636_parser___ReduceAction636___init(); /*new ReduceAction636*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[640]) /*AbstractArray::add*/;
-  variable[641] = NEW_ReduceAction637_parser___ReduceAction637___init(); /*new ReduceAction637*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[641]) /*AbstractArray::add*/;
-  variable[642] = NEW_ReduceAction638_parser___ReduceAction638___init(); /*new ReduceAction638*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[642]) /*AbstractArray::add*/;
-  variable[643] = NEW_ReduceAction639_parser___ReduceAction639___init(); /*new ReduceAction639*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[643]) /*AbstractArray::add*/;
-  variable[644] = NEW_ReduceAction640_parser___ReduceAction640___init(); /*new ReduceAction640*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[644]) /*AbstractArray::add*/;
-  variable[645] = NEW_ReduceAction641_parser___ReduceAction641___init(); /*new ReduceAction641*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[645]) /*AbstractArray::add*/;
-  variable[646] = NEW_ReduceAction642_parser___ReduceAction642___init(); /*new ReduceAction642*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[646]) /*AbstractArray::add*/;
-  variable[647] = NEW_ReduceAction643_parser___ReduceAction643___init(); /*new ReduceAction643*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[647]) /*AbstractArray::add*/;
-  variable[648] = NEW_ReduceAction644_parser___ReduceAction644___init(); /*new ReduceAction644*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[648]) /*AbstractArray::add*/;
-  variable[649] = NEW_ReduceAction645_parser___ReduceAction645___init(); /*new ReduceAction645*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[649]) /*AbstractArray::add*/;
-  variable[650] = NEW_ReduceAction646_parser___ReduceAction646___init(); /*new ReduceAction646*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[650]) /*AbstractArray::add*/;
-  variable[651] = NEW_ReduceAction647_parser___ReduceAction647___init(); /*new ReduceAction647*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[651]) /*AbstractArray::add*/;
-  variable[652] = NEW_ReduceAction648_parser___ReduceAction648___init(); /*new ReduceAction648*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[652]) /*AbstractArray::add*/;
-  variable[653] = NEW_ReduceAction649_parser___ReduceAction649___init(); /*new ReduceAction649*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[653]) /*AbstractArray::add*/;
-  variable[654] = NEW_ReduceAction650_parser___ReduceAction650___init(); /*new ReduceAction650*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[654]) /*AbstractArray::add*/;
-  variable[655] = NEW_ReduceAction651_parser___ReduceAction651___init(); /*new ReduceAction651*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[655]) /*AbstractArray::add*/;
-  variable[656] = NEW_ReduceAction652_parser___ReduceAction652___init(); /*new ReduceAction652*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[656]) /*AbstractArray::add*/;
-  variable[657] = NEW_ReduceAction653_parser___ReduceAction653___init(); /*new ReduceAction653*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[657]) /*AbstractArray::add*/;
-  variable[658] = NEW_ReduceAction654_parser___ReduceAction654___init(); /*new ReduceAction654*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[658]) /*AbstractArray::add*/;
-  variable[659] = NEW_ReduceAction655_parser___ReduceAction655___init(); /*new ReduceAction655*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[659]) /*AbstractArray::add*/;
-  variable[660] = NEW_ReduceAction656_parser___ReduceAction656___init(); /*new ReduceAction656*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[660]) /*AbstractArray::add*/;
-  variable[661] = NEW_ReduceAction657_parser___ReduceAction657___init(); /*new ReduceAction657*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[661]) /*AbstractArray::add*/;
-  variable[662] = NEW_ReduceAction658_parser___ReduceAction658___init(); /*new ReduceAction658*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[662]) /*AbstractArray::add*/;
-  variable[663] = NEW_ReduceAction659_parser___ReduceAction659___init(); /*new ReduceAction659*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[663]) /*AbstractArray::add*/;
-  variable[664] = NEW_ReduceAction660_parser___ReduceAction660___init(); /*new ReduceAction660*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[664]) /*AbstractArray::add*/;
-  variable[665] = NEW_ReduceAction661_parser___ReduceAction661___init(); /*new ReduceAction661*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[665]) /*AbstractArray::add*/;
-  variable[666] = NEW_ReduceAction662_parser___ReduceAction662___init(); /*new ReduceAction662*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[666]) /*AbstractArray::add*/;
-  variable[667] = NEW_ReduceAction663_parser___ReduceAction663___init(); /*new ReduceAction663*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[667]) /*AbstractArray::add*/;
-  variable[668] = NEW_ReduceAction664_parser___ReduceAction664___init(); /*new ReduceAction664*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[668]) /*AbstractArray::add*/;
-  variable[669] = NEW_ReduceAction665_parser___ReduceAction665___init(); /*new ReduceAction665*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[669]) /*AbstractArray::add*/;
-  variable[670] = NEW_ReduceAction666_parser___ReduceAction666___init(); /*new ReduceAction666*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[670]) /*AbstractArray::add*/;
-  variable[671] = NEW_ReduceAction667_parser___ReduceAction667___init(); /*new ReduceAction667*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[671]) /*AbstractArray::add*/;
-  variable[672] = NEW_ReduceAction668_parser___ReduceAction668___init(); /*new ReduceAction668*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[672]) /*AbstractArray::add*/;
-  variable[673] = NEW_ReduceAction669_parser___ReduceAction669___init(); /*new ReduceAction669*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[673]) /*AbstractArray::add*/;
-  variable[674] = NEW_ReduceAction670_parser___ReduceAction670___init(); /*new ReduceAction670*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[674]) /*AbstractArray::add*/;
-  variable[675] = NEW_ReduceAction671_parser___ReduceAction671___init(); /*new ReduceAction671*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[675]) /*AbstractArray::add*/;
-  variable[676] = NEW_ReduceAction672_parser___ReduceAction672___init(); /*new ReduceAction672*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[676]) /*AbstractArray::add*/;
-  variable[677] = NEW_ReduceAction673_parser___ReduceAction673___init(); /*new ReduceAction673*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[677]) /*AbstractArray::add*/;
-  variable[678] = NEW_ReduceAction674_parser___ReduceAction674___init(); /*new ReduceAction674*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[678]) /*AbstractArray::add*/;
-  variable[679] = NEW_ReduceAction675_parser___ReduceAction675___init(); /*new ReduceAction675*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[679]) /*AbstractArray::add*/;
-  variable[680] = NEW_ReduceAction676_parser___ReduceAction676___init(); /*new ReduceAction676*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[680]) /*AbstractArray::add*/;
-  variable[681] = NEW_ReduceAction677_parser___ReduceAction677___init(); /*new ReduceAction677*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[681]) /*AbstractArray::add*/;
-  variable[682] = NEW_ReduceAction678_parser___ReduceAction678___init(); /*new ReduceAction678*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[682]) /*AbstractArray::add*/;
-  variable[683] = NEW_ReduceAction679_parser___ReduceAction679___init(); /*new ReduceAction679*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[683]) /*AbstractArray::add*/;
-  variable[684] = NEW_ReduceAction680_parser___ReduceAction680___init(); /*new ReduceAction680*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[684]) /*AbstractArray::add*/;
-  variable[685] = NEW_ReduceAction681_parser___ReduceAction681___init(); /*new ReduceAction681*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[685]) /*AbstractArray::add*/;
-  variable[686] = NEW_ReduceAction682_parser___ReduceAction682___init(); /*new ReduceAction682*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[686]) /*AbstractArray::add*/;
-  variable[687] = NEW_ReduceAction683_parser___ReduceAction683___init(); /*new ReduceAction683*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[687]) /*AbstractArray::add*/;
-  variable[688] = NEW_ReduceAction684_parser___ReduceAction684___init(); /*new ReduceAction684*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[688]) /*AbstractArray::add*/;
-  variable[689] = NEW_ReduceAction685_parser___ReduceAction685___init(); /*new ReduceAction685*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[689]) /*AbstractArray::add*/;
-  variable[690] = NEW_ReduceAction686_parser___ReduceAction686___init(); /*new ReduceAction686*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[690]) /*AbstractArray::add*/;
-  variable[691] = NEW_ReduceAction687_parser___ReduceAction687___init(); /*new ReduceAction687*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[691]) /*AbstractArray::add*/;
-  variable[692] = NEW_ReduceAction688_parser___ReduceAction688___init(); /*new ReduceAction688*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[692]) /*AbstractArray::add*/;
-  variable[693] = NEW_ReduceAction689_parser___ReduceAction689___init(); /*new ReduceAction689*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[693]) /*AbstractArray::add*/;
-  variable[694] = NEW_ReduceAction690_parser___ReduceAction690___init(); /*new ReduceAction690*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[694]) /*AbstractArray::add*/;
-  variable[695] = NEW_ReduceAction691_parser___ReduceAction691___init(); /*new ReduceAction691*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[695]) /*AbstractArray::add*/;
-  variable[696] = NEW_ReduceAction692_parser___ReduceAction692___init(); /*new ReduceAction692*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[696]) /*AbstractArray::add*/;
-  variable[697] = NEW_ReduceAction693_parser___ReduceAction693___init(); /*new ReduceAction693*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[697]) /*AbstractArray::add*/;
-  variable[698] = NEW_ReduceAction694_parser___ReduceAction694___init(); /*new ReduceAction694*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[698]) /*AbstractArray::add*/;
-  variable[699] = NEW_ReduceAction695_parser___ReduceAction695___init(); /*new ReduceAction695*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[699]) /*AbstractArray::add*/;
-  variable[700] = NEW_ReduceAction696_parser___ReduceAction696___init(); /*new ReduceAction696*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[700]) /*AbstractArray::add*/;
-  variable[701] = NEW_ReduceAction697_parser___ReduceAction697___init(); /*new ReduceAction697*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[701]) /*AbstractArray::add*/;
-  variable[702] = NEW_ReduceAction698_parser___ReduceAction698___init(); /*new ReduceAction698*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[702]) /*AbstractArray::add*/;
-  variable[703] = NEW_ReduceAction699_parser___ReduceAction699___init(); /*new ReduceAction699*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[703]) /*AbstractArray::add*/;
-  variable[704] = NEW_ReduceAction700_parser___ReduceAction700___init(); /*new ReduceAction700*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[704]) /*AbstractArray::add*/;
-  variable[705] = NEW_ReduceAction701_parser___ReduceAction701___init(); /*new ReduceAction701*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[705]) /*AbstractArray::add*/;
-  variable[706] = NEW_ReduceAction702_parser___ReduceAction702___init(); /*new ReduceAction702*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[706]) /*AbstractArray::add*/;
-  variable[707] = NEW_ReduceAction703_parser___ReduceAction703___init(); /*new ReduceAction703*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[707]) /*AbstractArray::add*/;
-  variable[708] = NEW_ReduceAction704_parser___ReduceAction704___init(); /*new ReduceAction704*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[708]) /*AbstractArray::add*/;
-  variable[709] = NEW_ReduceAction705_parser___ReduceAction705___init(); /*new ReduceAction705*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[709]) /*AbstractArray::add*/;
-  variable[710] = NEW_ReduceAction706_parser___ReduceAction706___init(); /*new ReduceAction706*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[710]) /*AbstractArray::add*/;
-  variable[711] = NEW_ReduceAction707_parser___ReduceAction707___init(); /*new ReduceAction707*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[711]) /*AbstractArray::add*/;
-  variable[712] = NEW_ReduceAction708_parser___ReduceAction708___init(); /*new ReduceAction708*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[712]) /*AbstractArray::add*/;
-  variable[713] = NEW_ReduceAction709_parser___ReduceAction709___init(); /*new ReduceAction709*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[713]) /*AbstractArray::add*/;
-  variable[714] = NEW_ReduceAction710_parser___ReduceAction710___init(); /*new ReduceAction710*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[714]) /*AbstractArray::add*/;
-  variable[715] = NEW_ReduceAction711_parser___ReduceAction711___init(); /*new ReduceAction711*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[715]) /*AbstractArray::add*/;
-  variable[716] = NEW_ReduceAction712_parser___ReduceAction712___init(); /*new ReduceAction712*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[716]) /*AbstractArray::add*/;
-  variable[717] = NEW_ReduceAction713_parser___ReduceAction713___init(); /*new ReduceAction713*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[717]) /*AbstractArray::add*/;
-  variable[718] = NEW_ReduceAction714_parser___ReduceAction714___init(); /*new ReduceAction714*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[718]) /*AbstractArray::add*/;
-  variable[719] = NEW_ReduceAction715_parser___ReduceAction715___init(); /*new ReduceAction715*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[719]) /*AbstractArray::add*/;
-  variable[720] = NEW_ReduceAction716_parser___ReduceAction716___init(); /*new ReduceAction716*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[720]) /*AbstractArray::add*/;
-  variable[721] = NEW_ReduceAction717_parser___ReduceAction717___init(); /*new ReduceAction717*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[721]) /*AbstractArray::add*/;
-  variable[722] = NEW_ReduceAction718_parser___ReduceAction718___init(); /*new ReduceAction718*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[722]) /*AbstractArray::add*/;
-  variable[723] = NEW_ReduceAction719_parser___ReduceAction719___init(); /*new ReduceAction719*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[723]) /*AbstractArray::add*/;
-  variable[724] = NEW_ReduceAction720_parser___ReduceAction720___init(); /*new ReduceAction720*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[724]) /*AbstractArray::add*/;
-  variable[725] = NEW_ReduceAction721_parser___ReduceAction721___init(); /*new ReduceAction721*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[725]) /*AbstractArray::add*/;
-  variable[726] = NEW_ReduceAction722_parser___ReduceAction722___init(); /*new ReduceAction722*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[726]) /*AbstractArray::add*/;
-  variable[727] = NEW_ReduceAction723_parser___ReduceAction723___init(); /*new ReduceAction723*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[727]) /*AbstractArray::add*/;
-  variable[728] = NEW_ReduceAction724_parser___ReduceAction724___init(); /*new ReduceAction724*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[728]) /*AbstractArray::add*/;
-  variable[729] = NEW_ReduceAction725_parser___ReduceAction725___init(); /*new ReduceAction725*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[729]) /*AbstractArray::add*/;
-  variable[730] = NEW_ReduceAction726_parser___ReduceAction726___init(); /*new ReduceAction726*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[730]) /*AbstractArray::add*/;
-  variable[731] = NEW_ReduceAction727_parser___ReduceAction727___init(); /*new ReduceAction727*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[731]) /*AbstractArray::add*/;
-  variable[732] = NEW_ReduceAction728_parser___ReduceAction728___init(); /*new ReduceAction728*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[732]) /*AbstractArray::add*/;
-  variable[733] = NEW_ReduceAction729_parser___ReduceAction729___init(); /*new ReduceAction729*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[733]) /*AbstractArray::add*/;
-  variable[734] = NEW_ReduceAction730_parser___ReduceAction730___init(); /*new ReduceAction730*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[734]) /*AbstractArray::add*/;
-  variable[735] = NEW_ReduceAction731_parser___ReduceAction731___init(); /*new ReduceAction731*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[735]) /*AbstractArray::add*/;
-  variable[736] = NEW_ReduceAction732_parser___ReduceAction732___init(); /*new ReduceAction732*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[736]) /*AbstractArray::add*/;
-  variable[737] = NEW_ReduceAction733_parser___ReduceAction733___init(); /*new ReduceAction733*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[737]) /*AbstractArray::add*/;
-  variable[738] = NEW_ReduceAction734_parser___ReduceAction734___init(); /*new ReduceAction734*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[738]) /*AbstractArray::add*/;
-  variable[739] = NEW_ReduceAction735_parser___ReduceAction735___init(); /*new ReduceAction735*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[739]) /*AbstractArray::add*/;
-  variable[740] = NEW_ReduceAction736_parser___ReduceAction736___init(); /*new ReduceAction736*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[740]) /*AbstractArray::add*/;
-  variable[741] = NEW_ReduceAction737_parser___ReduceAction737___init(); /*new ReduceAction737*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[741]) /*AbstractArray::add*/;
-  variable[742] = NEW_ReduceAction738_parser___ReduceAction738___init(); /*new ReduceAction738*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[742]) /*AbstractArray::add*/;
-  variable[743] = NEW_ReduceAction739_parser___ReduceAction739___init(); /*new ReduceAction739*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[743]) /*AbstractArray::add*/;
-  variable[744] = NEW_ReduceAction740_parser___ReduceAction740___init(); /*new ReduceAction740*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[744]) /*AbstractArray::add*/;
-  variable[745] = NEW_ReduceAction741_parser___ReduceAction741___init(); /*new ReduceAction741*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[745]) /*AbstractArray::add*/;
-  variable[746] = NEW_ReduceAction742_parser___ReduceAction742___init(); /*new ReduceAction742*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[746]) /*AbstractArray::add*/;
-  variable[747] = NEW_ReduceAction743_parser___ReduceAction743___init(); /*new ReduceAction743*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[747]) /*AbstractArray::add*/;
-  variable[748] = NEW_ReduceAction744_parser___ReduceAction744___init(); /*new ReduceAction744*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[748]) /*AbstractArray::add*/;
-  variable[749] = NEW_ReduceAction745_parser___ReduceAction745___init(); /*new ReduceAction745*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[749]) /*AbstractArray::add*/;
-  variable[750] = NEW_ReduceAction746_parser___ReduceAction746___init(); /*new ReduceAction746*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[750]) /*AbstractArray::add*/;
-  variable[751] = NEW_ReduceAction747_parser___ReduceAction747___init(); /*new ReduceAction747*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[751]) /*AbstractArray::add*/;
-  variable[752] = NEW_ReduceAction748_parser___ReduceAction748___init(); /*new ReduceAction748*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[752]) /*AbstractArray::add*/;
-  variable[753] = NEW_ReduceAction749_parser___ReduceAction749___init(); /*new ReduceAction749*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[753]) /*AbstractArray::add*/;
-  variable[754] = NEW_ReduceAction750_parser___ReduceAction750___init(); /*new ReduceAction750*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[754]) /*AbstractArray::add*/;
-  variable[755] = NEW_ReduceAction751_parser___ReduceAction751___init(); /*new ReduceAction751*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[755]) /*AbstractArray::add*/;
-  variable[756] = NEW_ReduceAction752_parser___ReduceAction752___init(); /*new ReduceAction752*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[756]) /*AbstractArray::add*/;
-  variable[757] = NEW_ReduceAction753_parser___ReduceAction753___init(); /*new ReduceAction753*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[757]) /*AbstractArray::add*/;
-  variable[758] = NEW_ReduceAction754_parser___ReduceAction754___init(); /*new ReduceAction754*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[758]) /*AbstractArray::add*/;
-  variable[759] = NEW_ReduceAction755_parser___ReduceAction755___init(); /*new ReduceAction755*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[759]) /*AbstractArray::add*/;
-  variable[760] = NEW_ReduceAction756_parser___ReduceAction756___init(); /*new ReduceAction756*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[760]) /*AbstractArray::add*/;
-  variable[761] = NEW_ReduceAction757_parser___ReduceAction757___init(); /*new ReduceAction757*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[761]) /*AbstractArray::add*/;
-  variable[762] = NEW_ReduceAction758_parser___ReduceAction758___init(); /*new ReduceAction758*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[762]) /*AbstractArray::add*/;
-  variable[763] = NEW_ReduceAction759_parser___ReduceAction759___init(); /*new ReduceAction759*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[763]) /*AbstractArray::add*/;
-  variable[764] = NEW_ReduceAction760_parser___ReduceAction760___init(); /*new ReduceAction760*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[764]) /*AbstractArray::add*/;
-  variable[765] = NEW_ReduceAction761_parser___ReduceAction761___init(); /*new ReduceAction761*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[765]) /*AbstractArray::add*/;
-  variable[766] = NEW_ReduceAction762_parser___ReduceAction762___init(); /*new ReduceAction762*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[766]) /*AbstractArray::add*/;
-  variable[767] = NEW_ReduceAction763_parser___ReduceAction763___init(); /*new ReduceAction763*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[767]) /*AbstractArray::add*/;
-  variable[768] = NEW_ReduceAction764_parser___ReduceAction764___init(); /*new ReduceAction764*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[768]) /*AbstractArray::add*/;
-  variable[769] = NEW_ReduceAction765_parser___ReduceAction765___init(); /*new ReduceAction765*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[769]) /*AbstractArray::add*/;
-  variable[770] = NEW_ReduceAction766_parser___ReduceAction766___init(); /*new ReduceAction766*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[770]) /*AbstractArray::add*/;
-  variable[771] = NEW_ReduceAction767_parser___ReduceAction767___init(); /*new ReduceAction767*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[771]) /*AbstractArray::add*/;
-  variable[772] = NEW_ReduceAction768_parser___ReduceAction768___init(); /*new ReduceAction768*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[772]) /*AbstractArray::add*/;
-  variable[773] = NEW_ReduceAction769_parser___ReduceAction769___init(); /*new ReduceAction769*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[773]) /*AbstractArray::add*/;
-  variable[774] = NEW_ReduceAction770_parser___ReduceAction770___init(); /*new ReduceAction770*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[774]) /*AbstractArray::add*/;
-  variable[775] = NEW_ReduceAction771_parser___ReduceAction771___init(); /*new ReduceAction771*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[775]) /*AbstractArray::add*/;
-  variable[776] = NEW_ReduceAction772_parser___ReduceAction772___init(); /*new ReduceAction772*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[776]) /*AbstractArray::add*/;
-  variable[777] = NEW_ReduceAction773_parser___ReduceAction773___init(); /*new ReduceAction773*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[777]) /*AbstractArray::add*/;
-  variable[778] = NEW_ReduceAction774_parser___ReduceAction774___init(); /*new ReduceAction774*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[778]) /*AbstractArray::add*/;
-  variable[779] = NEW_ReduceAction775_parser___ReduceAction775___init(); /*new ReduceAction775*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[779]) /*AbstractArray::add*/;
-  variable[780] = NEW_ReduceAction776_parser___ReduceAction776___init(); /*new ReduceAction776*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[780]) /*AbstractArray::add*/;
-  variable[781] = NEW_ReduceAction777_parser___ReduceAction777___init(); /*new ReduceAction777*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[781]) /*AbstractArray::add*/;
-  variable[782] = NEW_ReduceAction778_parser___ReduceAction778___init(); /*new ReduceAction778*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[782]) /*AbstractArray::add*/;
-  variable[783] = NEW_ReduceAction779_parser___ReduceAction779___init(); /*new ReduceAction779*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[783]) /*AbstractArray::add*/;
-  variable[784] = NEW_ReduceAction780_parser___ReduceAction780___init(); /*new ReduceAction780*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[784]) /*AbstractArray::add*/;
-  variable[785] = NEW_ReduceAction781_parser___ReduceAction781___init(); /*new ReduceAction781*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[785]) /*AbstractArray::add*/;
-  variable[786] = NEW_ReduceAction782_parser___ReduceAction782___init(); /*new ReduceAction782*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[786]) /*AbstractArray::add*/;
-  variable[787] = NEW_ReduceAction783_parser___ReduceAction783___init(); /*new ReduceAction783*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[787]) /*AbstractArray::add*/;
-  variable[788] = NEW_ReduceAction784_parser___ReduceAction784___init(); /*new ReduceAction784*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[788]) /*AbstractArray::add*/;
-  variable[789] = NEW_ReduceAction785_parser___ReduceAction785___init(); /*new ReduceAction785*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[789]) /*AbstractArray::add*/;
-  variable[790] = NEW_ReduceAction786_parser___ReduceAction786___init(); /*new ReduceAction786*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[790]) /*AbstractArray::add*/;
-  variable[791] = NEW_ReduceAction787_parser___ReduceAction787___init(); /*new ReduceAction787*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[791]) /*AbstractArray::add*/;
-  variable[792] = NEW_ReduceAction788_parser___ReduceAction788___init(); /*new ReduceAction788*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[792]) /*AbstractArray::add*/;
-  variable[793] = NEW_ReduceAction789_parser___ReduceAction789___init(); /*new ReduceAction789*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[793]) /*AbstractArray::add*/;
-  variable[794] = NEW_ReduceAction790_parser___ReduceAction790___init(); /*new ReduceAction790*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[794]) /*AbstractArray::add*/;
-  variable[795] = NEW_ReduceAction791_parser___ReduceAction791___init(); /*new ReduceAction791*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[795]) /*AbstractArray::add*/;
-  variable[796] = NEW_ReduceAction792_parser___ReduceAction792___init(); /*new ReduceAction792*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[796]) /*AbstractArray::add*/;
-  variable[797] = NEW_ReduceAction793_parser___ReduceAction793___init(); /*new ReduceAction793*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[797]) /*AbstractArray::add*/;
-  variable[798] = NEW_ReduceAction794_parser___ReduceAction794___init(); /*new ReduceAction794*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[798]) /*AbstractArray::add*/;
-  variable[799] = NEW_ReduceAction795_parser___ReduceAction795___init(); /*new ReduceAction795*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[799]) /*AbstractArray::add*/;
-  variable[800] = NEW_ReduceAction796_parser___ReduceAction796___init(); /*new ReduceAction796*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[800]) /*AbstractArray::add*/;
-  variable[801] = NEW_ReduceAction797_parser___ReduceAction797___init(); /*new ReduceAction797*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[801]) /*AbstractArray::add*/;
-  variable[802] = NEW_ReduceAction798_parser___ReduceAction798___init(); /*new ReduceAction798*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[802]) /*AbstractArray::add*/;
-  variable[803] = NEW_ReduceAction799_parser___ReduceAction799___init(); /*new ReduceAction799*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[803]) /*AbstractArray::add*/;
-  variable[804] = NEW_ReduceAction800_parser___ReduceAction800___init(); /*new ReduceAction800*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[804]) /*AbstractArray::add*/;
-  variable[805] = NEW_ReduceAction801_parser___ReduceAction801___init(); /*new ReduceAction801*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[805]) /*AbstractArray::add*/;
-  variable[806] = NEW_ReduceAction802_parser___ReduceAction802___init(); /*new ReduceAction802*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[806]) /*AbstractArray::add*/;
-  variable[807] = NEW_ReduceAction803_parser___ReduceAction803___init(); /*new ReduceAction803*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[807]) /*AbstractArray::add*/;
-  variable[808] = NEW_ReduceAction804_parser___ReduceAction804___init(); /*new ReduceAction804*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[808]) /*AbstractArray::add*/;
-  variable[809] = NEW_ReduceAction805_parser___ReduceAction805___init(); /*new ReduceAction805*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[809]) /*AbstractArray::add*/;
-  variable[810] = NEW_ReduceAction806_parser___ReduceAction806___init(); /*new ReduceAction806*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[810]) /*AbstractArray::add*/;
-  variable[811] = NEW_ReduceAction807_parser___ReduceAction807___init(); /*new ReduceAction807*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[811]) /*AbstractArray::add*/;
-  variable[812] = NEW_ReduceAction808_parser___ReduceAction808___init(); /*new ReduceAction808*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[812]) /*AbstractArray::add*/;
-  variable[813] = NEW_ReduceAction809_parser___ReduceAction809___init(); /*new ReduceAction809*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[813]) /*AbstractArray::add*/;
-  variable[814] = NEW_ReduceAction810_parser___ReduceAction810___init(); /*new ReduceAction810*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[814]) /*AbstractArray::add*/;
-  variable[815] = NEW_ReduceAction811_parser___ReduceAction811___init(); /*new ReduceAction811*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[815]) /*AbstractArray::add*/;
-  variable[816] = NEW_ReduceAction812_parser___ReduceAction812___init(); /*new ReduceAction812*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[816]) /*AbstractArray::add*/;
-  variable[817] = NEW_ReduceAction813_parser___ReduceAction813___init(); /*new ReduceAction813*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[817]) /*AbstractArray::add*/;
-  variable[818] = NEW_ReduceAction814_parser___ReduceAction814___init(); /*new ReduceAction814*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[818]) /*AbstractArray::add*/;
-  variable[819] = NEW_ReduceAction815_parser___ReduceAction815___init(); /*new ReduceAction815*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[819]) /*AbstractArray::add*/;
-  variable[820] = NEW_ReduceAction816_parser___ReduceAction816___init(); /*new ReduceAction816*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[820]) /*AbstractArray::add*/;
-  variable[821] = NEW_ReduceAction817_parser___ReduceAction817___init(); /*new ReduceAction817*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[821]) /*AbstractArray::add*/;
-  variable[822] = NEW_ReduceAction818_parser___ReduceAction818___init(); /*new ReduceAction818*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[822]) /*AbstractArray::add*/;
-  variable[823] = NEW_ReduceAction819_parser___ReduceAction819___init(); /*new ReduceAction819*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[823]) /*AbstractArray::add*/;
-  variable[824] = NEW_ReduceAction820_parser___ReduceAction820___init(); /*new ReduceAction820*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[824]) /*AbstractArray::add*/;
-  variable[825] = NEW_ReduceAction821_parser___ReduceAction821___init(); /*new ReduceAction821*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[825]) /*AbstractArray::add*/;
-  variable[826] = NEW_ReduceAction822_parser___ReduceAction822___init(); /*new ReduceAction822*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[826]) /*AbstractArray::add*/;
-  variable[827] = NEW_ReduceAction823_parser___ReduceAction823___init(); /*new ReduceAction823*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[827]) /*AbstractArray::add*/;
-  variable[828] = NEW_ReduceAction824_parser___ReduceAction824___init(); /*new ReduceAction824*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[828]) /*AbstractArray::add*/;
-  variable[4] = NEW_Array_array___Array___with_items(variable[3]); /*new Array[ReduceAction]*/
-  variable[3] = variable[4];
-  ATTR_parser___Parser____reduce_table(variable[2]) /*Parser::_reduce_table*/ = variable[3];
-  return_label28: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 996, LOCATE_parser___SearchTokensVisitor___visit};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  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*/
-    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, 999); nit_exit(1);}
-    variable[3] = variable[0];
-    ATTR_parser___SearchTokensVisitor____last_token(variable[3]) /*SearchTokensVisitor::_last_token*/ =  variable[1] /*n*/;
-    variable[3] = variable[0];
-    variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[3]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    variable[3] = ((array___AbstractArray___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*AbstractArray::iterator*/;
-    while (true) { /*for*/
-      variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ArrayIterator::is_ok*/;
-      if (!UNTAG_Bool(variable[4])) break; /*for*/
-      variable[4] = ((array___ArrayIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ArrayIterator::item*/;
-      variable[5] = variable[4];
-      ((parser_prod___Prod___first_token__eq_t)CALL( variable[5] /*no*/,COLOR_parser_prod___Prod___first_token__eq))( variable[5] /*no*/,  variable[1] /*n*/) /*Prod::first_token=*/;
-      continue_30: while(0);
-      ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
-    }
-    break_30: while(0);
-    variable[3] = variable[0];
-    variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[3]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    ((array___AbstractArray___clear_t)CALL(variable[3],COLOR_abstract_collection___RemovableCollection___clear))(variable[3]) /*AbstractArray::clear*/;
-  } else { /*if*/
-    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, 1006); nit_exit(1);}
-    variable[3] = variable[0];
-    variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[3]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3],  variable[1] /*n*/) /*AbstractArray::add*/;
-    variable[3] = variable[0];
-    ((parser_prod___PNode___visit_all_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___visit_all))( variable[1] /*n*/, variable[3]) /*PNode::visit_all*/;
-    variable[3] = variable[0];
-    variable[3] = ATTR_parser___SearchTokensVisitor____last_token(variable[3]) /*SearchTokensVisitor::_last_token*/;
-    ((parser_prod___Prod___last_token__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___Prod___last_token__eq))( 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, 1012, LOCATE_parser___SearchTokensVisitor___init};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_SearchTokensVisitor].i]) return;
-  variable[2] = variable[0];
-  variable[3] = NEW_Array_array___Array___init(); /*new Array[Prod]*/
-  ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[2]) /*SearchTokensVisitor::_untokenned_nodes*/ = variable[3];
-  return_label31: while(false);
-  init_table[VAL2OBJ( self)->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, 1020, LOCATE_parser___ReduceAction___action};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_parser, 1020);
-  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;
-  void **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, 1025, LOCATE_parser___ReduceAction0___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1038, LOCATE_parser___ReduceAction0___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction0].i]) return;
-  return_label33: while(false);
-  init_table[VAL2OBJ( self)->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, 1042, LOCATE_parser___ReduceAction1___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  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, 1049); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1058, LOCATE_parser___ReduceAction1___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction1].i]) return;
-  return_label35: while(false);
-  init_table[VAL2OBJ( self)->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, 1062, LOCATE_parser___ReduceAction2___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  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, 1069); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[5] =  variable[7] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode4*/,  variable[7] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1085, LOCATE_parser___ReduceAction2___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction2].i]) return;
-  return_label37: while(false);
-  init_table[VAL2OBJ( self)->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, 1089, LOCATE_parser___ReduceAction3___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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, 1097); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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, 1099); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1115, LOCATE_parser___ReduceAction3___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction3].i]) return;
-  return_label39: while(false);
-  init_table[VAL2OBJ( self)->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, 1119, LOCATE_parser___ReduceAction4___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  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, 1126); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1142, LOCATE_parser___ReduceAction4___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction4].i]) return;
-  return_label41: while(false);
-  init_table[VAL2OBJ( self)->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, 1146, LOCATE_parser___ReduceAction5___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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, 1154); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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, 1156); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1172, LOCATE_parser___ReduceAction5___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction5].i]) return;
-  return_label43: while(false);
-  init_table[VAL2OBJ( self)->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, 1176, LOCATE_parser___ReduceAction6___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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, 1184); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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, 1193); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1209, LOCATE_parser___ReduceAction6___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction6].i]) return;
-  return_label45: while(false);
-  init_table[VAL2OBJ( self)->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, 1213, LOCATE_parser___ReduceAction7___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 1222); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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, 1224); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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, 1233); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1249, LOCATE_parser___ReduceAction7___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction7].i]) return;
-  return_label47: while(false);
-  init_table[VAL2OBJ( self)->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, 1253, LOCATE_parser___ReduceAction8___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  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, 1262); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[9] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[11] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[8] /*listnode6*/); /*new ATopClassdef*/
-  variable[10] = variable[11];
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode7*/,  variable[10] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1280, LOCATE_parser___ReduceAction8___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction8].i]) return;
-  return_label49: while(false);
-  init_table[VAL2OBJ( self)->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, 1284, LOCATE_parser___ReduceAction9___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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, 1294); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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, 1296); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode7*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode7*/,  variable[11] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[9] /*listnode7*/); /*new ATopClassdef*/
-  variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1321, LOCATE_parser___ReduceAction9___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction9].i]) return;
-  return_label51: while(false);
-  init_table[VAL2OBJ( self)->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, 1325, LOCATE_parser___ReduceAction10___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 1334); nit_exit(1);}
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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, 1337); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode6*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode6*/); /*new ATopClassdef*/
-  variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode7*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1355, LOCATE_parser___ReduceAction10___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction10].i]) return;
-  return_label53: while(false);
-  init_table[VAL2OBJ( self)->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, 1359, LOCATE_parser___ReduceAction11___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 1369); nit_exit(1);}
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  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, 1372); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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, 1374); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[13] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/); /*new ATopClassdef*/
-  variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1399, LOCATE_parser___ReduceAction11___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction11].i]) return;
-  return_label55: while(false);
-  init_table[VAL2OBJ( self)->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, 1403, LOCATE_parser___ReduceAction12___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 1412); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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, 1422); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/); /*new ATopClassdef*/
-  variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1440, LOCATE_parser___ReduceAction12___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction12].i]) return;
-  return_label57: while(false);
-  init_table[VAL2OBJ( self)->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, 1444, LOCATE_parser___ReduceAction13___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 1454); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  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, 1464); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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, 1466); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode8*/); /*new ATopClassdef*/
-  variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1491, LOCATE_parser___ReduceAction13___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction13].i]) return;
-  return_label59: while(false);
-  init_table[VAL2OBJ( self)->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, 1495, LOCATE_parser___ReduceAction14___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 1505); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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, 1507); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[5] /*nodearraylist3*/;
-  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, 1517); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/); /*new ATopClassdef*/
-  variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1535, LOCATE_parser___ReduceAction14___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction14].i]) return;
-  return_label61: while(false);
-  init_table[VAL2OBJ( self)->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, 1539, LOCATE_parser___ReduceAction15___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 1550); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 1552); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  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, 1562); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist5*/;
-  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, 1564); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/); /*new ATopClassdef*/
-  variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1589, LOCATE_parser___ReduceAction15___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction15].i]) return;
-  return_label63: while(false);
-  init_table[VAL2OBJ( self)->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, 1593, LOCATE_parser___ReduceAction16___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 1602); nit_exit(1);}
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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, 1605); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/); /*new ATopClassdef*/
-  variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[9] /*listnode4*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode8*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1630, LOCATE_parser___ReduceAction16___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction16].i]) return;
-  return_label65: while(false);
-  init_table[VAL2OBJ( self)->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, 1634, LOCATE_parser___ReduceAction17___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 1644); nit_exit(1);}
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  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, 1647); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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, 1649); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode8*/); /*new ATopClassdef*/
-  variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[10] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1681, LOCATE_parser___ReduceAction17___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction17].i]) return;
-  return_label67: while(false);
-  init_table[VAL2OBJ( self)->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, 1685, LOCATE_parser___ReduceAction18___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 1695); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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, 1697); nit_exit(1);}
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[5] /*nodearraylist3*/;
-  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, 1700); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/); /*new ATopClassdef*/
-  variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[11] /*listnode4*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode8*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1725, LOCATE_parser___ReduceAction18___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction18].i]) return;
-  return_label69: while(false);
-  init_table[VAL2OBJ( self)->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, 1729, LOCATE_parser___ReduceAction19___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 1740); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 1742); nit_exit(1);}
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  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, 1745); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist5*/;
-  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, 1747); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/); /*new ATopClassdef*/
-  variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1779, LOCATE_parser___ReduceAction19___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction19].i]) return;
-  return_label71: while(false);
-  init_table[VAL2OBJ( self)->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, 1783, LOCATE_parser___ReduceAction20___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 1793); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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, 1802); nit_exit(1);}
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[5] /*nodearraylist3*/;
-  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, 1805); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/); /*new ATopClassdef*/
-  variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[11] /*listnode5*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode9*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1830, LOCATE_parser___ReduceAction20___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction20].i]) return;
-  return_label73: while(false);
-  init_table[VAL2OBJ( self)->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, 1834, LOCATE_parser___ReduceAction21___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 1845); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 1854); nit_exit(1);}
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  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, 1857); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist5*/;
-  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, 1859); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode9*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode9*/,  variable[15] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode9*/); /*new ATopClassdef*/
-  variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1891, LOCATE_parser___ReduceAction21___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction21].i]) return;
-  return_label75: while(false);
-  init_table[VAL2OBJ( self)->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, 1895, LOCATE_parser___ReduceAction22___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 1906); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 1908); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] =  variable[6] /*nodearraylist3*/;
-  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, 1917); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[5] /*nodearraylist4*/;
-  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, 1920); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/); /*new ATopClassdef*/
-  variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[13] /*listnode5*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode9*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 1945, LOCATE_parser___ReduceAction22___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction22].i]) return;
-  return_label77: while(false);
-  init_table[VAL2OBJ( self)->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, 1949, LOCATE_parser___ReduceAction23___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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, 1961); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  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, 1963); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] =  variable[7] /*nodearraylist3*/;
-  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, 1972); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[6] /*nodearraylist4*/;
-  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, 1975); nit_exit(1);}
-  variable[17] =  variable[4] /*nodearraylist6*/;
-  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, 1977); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode9*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[15] /*listnode9*/); /*new ATopClassdef*/
-  variable[18] = variable[19];
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[14] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2009, LOCATE_parser___ReduceAction23___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction23].i]) return;
-  return_label79: while(false);
-  init_table[VAL2OBJ( self)->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, 2013, LOCATE_parser___ReduceAction24___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  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, 2020); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[7] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode5*/,  variable[7] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2032, LOCATE_parser___ReduceAction24___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction24].i]) return;
-  return_label81: while(false);
-  init_table[VAL2OBJ( self)->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, 2036, LOCATE_parser___ReduceAction25___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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, 2044); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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, 2046); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode5*/,  variable[9] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2058, LOCATE_parser___ReduceAction25___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction25].i]) return;
-  return_label83: while(false);
-  init_table[VAL2OBJ( self)->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, 2062, LOCATE_parser___ReduceAction26___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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, 2070); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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, 2079); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2091, LOCATE_parser___ReduceAction26___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction26].i]) return;
-  return_label85: while(false);
-  init_table[VAL2OBJ( self)->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, 2095, LOCATE_parser___ReduceAction27___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 2104); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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, 2106); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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, 2115); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2127, LOCATE_parser___ReduceAction27___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction27].i]) return;
-  return_label87: while(false);
-  init_table[VAL2OBJ( self)->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, 2131, LOCATE_parser___ReduceAction28___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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, 2139); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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, 2141); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[8] /*listnode4*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode6*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2160, LOCATE_parser___ReduceAction28___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction28].i]) return;
-  return_label89: while(false);
-  init_table[VAL2OBJ( self)->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, 2164, LOCATE_parser___ReduceAction29___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 2173); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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, 2175); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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, 2177); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[10] /*listnode4*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2196, LOCATE_parser___ReduceAction29___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction29].i]) return;
-  return_label91: while(false);
-  init_table[VAL2OBJ( self)->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, 2200, LOCATE_parser___ReduceAction30___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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, 2209); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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, 2218); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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, 2220); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[10] /*listnode5*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode7*/,  variable[11] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2239, LOCATE_parser___ReduceAction30___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction30].i]) return;
-  return_label93: while(false);
-  init_table[VAL2OBJ( self)->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, 2243, LOCATE_parser___ReduceAction31___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 2253); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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, 2255); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  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, 2264); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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, 2266); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[12] /*listnode5*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode7*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode7*/,  variable[13] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2285, LOCATE_parser___ReduceAction31___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction31].i]) return;
-  return_label95: while(false);
-  init_table[VAL2OBJ( self)->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, 2289, LOCATE_parser___ReduceAction32___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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, 2299); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode6*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[12] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[9] /*listnode6*/); /*new ATopClassdef*/
-  variable[11] = variable[12];
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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, 2307); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[11] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode7*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2322, LOCATE_parser___ReduceAction32___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction32].i]) return;
-  return_label97: while(false);
-  init_table[VAL2OBJ( self)->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, 2326, LOCATE_parser___ReduceAction33___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[7] /*nodearraylist1*/;
-  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, 2337); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  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, 2339); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/); /*new ATopClassdef*/
-  variable[13] = variable[14];
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  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, 2354); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2369, LOCATE_parser___ReduceAction33___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction33].i]) return;
-  return_label99: while(false);
-  init_table[VAL2OBJ( self)->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, 2373, LOCATE_parser___ReduceAction34___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 2383); nit_exit(1);}
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  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, 2386); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode6*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode6*/); /*new ATopClassdef*/
-  variable[13] = variable[14];
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  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, 2394); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode7*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2409, LOCATE_parser___ReduceAction34___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction34].i]) return;
-  return_label101: while(false);
-  init_table[VAL2OBJ( self)->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, 2413, LOCATE_parser___ReduceAction35___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 2424); nit_exit(1);}
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist2*/;
-  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, 2427); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist4*/;
-  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, 2429); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[12] =  variable[14] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode7*/,  variable[14] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/); /*new ATopClassdef*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  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, 2444); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2459, LOCATE_parser___ReduceAction35___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction35].i]) return;
-  return_label103: while(false);
-  init_table[VAL2OBJ( self)->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, 2463, LOCATE_parser___ReduceAction36___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 2473); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  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, 2483); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/); /*new ATopClassdef*/
-  variable[13] = variable[14];
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  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, 2491); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2506, LOCATE_parser___ReduceAction36___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction36].i]) return;
-  return_label105: while(false);
-  init_table[VAL2OBJ( self)->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, 2510, LOCATE_parser___ReduceAction37___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 2521); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist2*/;
-  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, 2531); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist4*/;
-  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, 2533); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[12] =  variable[14] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/); /*new ATopClassdef*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  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, 2548); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2563, LOCATE_parser___ReduceAction37___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction37].i]) return;
-  return_label107: while(false);
-  init_table[VAL2OBJ( self)->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, 2567, LOCATE_parser___ReduceAction38___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 2578); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 2580); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  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, 2590); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode7*/); /*new ATopClassdef*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  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, 2598); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2613, LOCATE_parser___ReduceAction38___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction38].i]) return;
-  return_label109: while(false);
-  init_table[VAL2OBJ( self)->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, 2617, LOCATE_parser___ReduceAction39___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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, 2629); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  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, 2631); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist3*/;
-  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, 2641); nit_exit(1);}
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  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, 2643); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/); /*new ATopClassdef*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  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, 2658); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2673, LOCATE_parser___ReduceAction39___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction39].i]) return;
-  return_label111: while(false);
-  init_table[VAL2OBJ( self)->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, 2677, LOCATE_parser___ReduceAction40___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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, 2687); nit_exit(1);}
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  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, 2690); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/); /*new ATopClassdef*/
-  variable[13] = variable[14];
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  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, 2698); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[10] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2720, LOCATE_parser___ReduceAction40___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction40].i]) return;
-  return_label113: while(false);
-  init_table[VAL2OBJ( self)->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, 2724, LOCATE_parser___ReduceAction41___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 2735); nit_exit(1);}
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist2*/;
-  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, 2738); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist4*/;
-  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, 2740); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[12] =  variable[14] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/); /*new ATopClassdef*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  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, 2755); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[11] /*listnode4*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode10*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2777, LOCATE_parser___ReduceAction41___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction41].i]) return;
-  return_label115: while(false);
-  init_table[VAL2OBJ( self)->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, 2781, LOCATE_parser___ReduceAction42___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 2792); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 2794); nit_exit(1);}
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  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, 2797); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode7*/); /*new ATopClassdef*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  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, 2805); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2827, LOCATE_parser___ReduceAction42___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction42].i]) return;
-  return_label117: while(false);
-  init_table[VAL2OBJ( self)->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, 2831, LOCATE_parser___ReduceAction43___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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, 2843); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  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, 2845); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist3*/;
-  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, 2848); nit_exit(1);}
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  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, 2850); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/); /*new ATopClassdef*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  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, 2865); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[13] /*listnode4*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode10*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2887, LOCATE_parser___ReduceAction43___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction43].i]) return;
-  return_label119: while(false);
-  init_table[VAL2OBJ( self)->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, 2891, LOCATE_parser___ReduceAction44___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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, 2902); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  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, 2911); nit_exit(1);}
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  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, 2914); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/); /*new ATopClassdef*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  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, 2922); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 2944, LOCATE_parser___ReduceAction44___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction44].i]) return;
-  return_label121: while(false);
-  init_table[VAL2OBJ( self)->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, 2948, LOCATE_parser___ReduceAction45___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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, 2960); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  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, 2969); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist3*/;
-  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, 2972); nit_exit(1);}
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  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, 2974); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode9*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode9*/,  variable[16] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode9*/); /*new ATopClassdef*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  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, 2989); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[13] /*listnode5*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode11*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode11*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode11*/,  variable[18] /*pclassdefnode10*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3011, LOCATE_parser___ReduceAction45___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction45].i]) return;
-  return_label123: while(false);
-  init_table[VAL2OBJ( self)->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, 3015, LOCATE_parser___ReduceAction46___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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, 3027); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  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, 3029); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] =  variable[7] /*nodearraylist3*/;
-  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, 3038); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[6] /*nodearraylist4*/;
-  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, 3041); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode8*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[15] /*listnode8*/); /*new ATopClassdef*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  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, 3049); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[14] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3071, LOCATE_parser___ReduceAction46___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction46].i]) return;
-  return_label125: while(false);
-  init_table[VAL2OBJ( self)->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, 3075, LOCATE_parser___ReduceAction47___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[10] /*nodearraylist1*/;
-  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, 3088); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist2*/;
-  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, 3090); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode4*/,  variable[14] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[8] /*nodearraylist3*/;
-  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, 3099); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[7] /*nodearraylist4*/;
-  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, 3102); nit_exit(1);}
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  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, 3104); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[17] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[17] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode9*/,  variable[17] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[16] /*listnode9*/); /*new ATopClassdef*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist7*/;
-  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, 3119); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[12] =  variable[15] /*listnode5*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode11*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[19] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[19] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode11*/,  variable[19] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode11*/,  variable[20] /*pclassdefnode10*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3141, LOCATE_parser___ReduceAction47___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction47].i]) return;
-  return_label127: while(false);
-  init_table[VAL2OBJ( self)->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, 3145, LOCATE_parser___ReduceAction48___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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, 3154); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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, 3156); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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, 3158); nit_exit(1);}
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(1)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3167, LOCATE_parser___ReduceAction48___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction48].i]) return;
-  return_label129: while(false);
-  init_table[VAL2OBJ( self)->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, 3171, LOCATE_parser___ReduceAction49___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist2*/;
-  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, 3181); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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, 3183); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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, 3185); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3194, LOCATE_parser___ReduceAction49___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction49].i]) return;
-  return_label131: while(false);
-  init_table[VAL2OBJ( self)->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, 3198, LOCATE_parser___ReduceAction50___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist2*/;
-  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, 3208); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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, 3210); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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, 3212); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3221, LOCATE_parser___ReduceAction50___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction50].i]) return;
-  return_label133: while(false);
-  init_table[VAL2OBJ( self)->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, 3225, LOCATE_parser___ReduceAction51___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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, 3231); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode3*/,  variable[6] /*ppropdefnode2*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3241, LOCATE_parser___ReduceAction51___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction51].i]) return;
-  return_label135: while(false);
-  init_table[VAL2OBJ( self)->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, 3245, LOCATE_parser___ReduceAction52___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3252, LOCATE_parser___ReduceAction52___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction52].i]) return;
-  return_label137: while(false);
-  init_table[VAL2OBJ( self)->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, 3256, LOCATE_parser___ReduceAction53___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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, 3264); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode5*/,  variable[8] /*pexprnode4*/) /*AbstractArray::add*/;
-  }
-  variable[10] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[7] /*listnode5*/); /*new ABlockExpr*/
-  variable[9] = variable[10];
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3278, LOCATE_parser___ReduceAction53___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction53].i]) return;
-  return_label139: while(false);
-  init_table[VAL2OBJ( self)->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, 3282, LOCATE_parser___ReduceAction54___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  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, 3291); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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, 3293); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[9] /*pexprnode4*/) /*AbstractArray::add*/;
-  }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode6*/); /*new ABlockExpr*/
-  variable[11] = variable[12];
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3314, LOCATE_parser___ReduceAction54___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction54].i]) return;
-  return_label141: while(false);
-  init_table[VAL2OBJ( self)->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, 3318, LOCATE_parser___ReduceAction55___action};
-  val_t variable[20];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[10] /*nodearraylist1*/;
-  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, 3332); nit_exit(1);}
-  variable[15] =  variable[9] /*nodearraylist2*/;
-  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, 3334); nit_exit(1);}
-  variable[16] =  variable[8] /*nodearraylist3*/;
-  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, 3336); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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, 3338); nit_exit(1);}
-  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=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3352, LOCATE_parser___ReduceAction55___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction55].i]) return;
-  return_label143: while(false);
-  init_table[VAL2OBJ( self)->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, 3356, LOCATE_parser___ReduceAction56___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[11] /*nodearraylist1*/;
-  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, 3371); nit_exit(1);}
-  variable[16] =  variable[10] /*nodearraylist2*/;
-  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, 3373); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist3*/;
-  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, 3375); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist4*/;
-  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, 3377); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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, 3379); nit_exit(1);}
-  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=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3393, LOCATE_parser___ReduceAction56___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction56].i]) return;
-  return_label145: while(false);
-  init_table[VAL2OBJ( self)->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, 3397, LOCATE_parser___ReduceAction57___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[11] /*nodearraylist1*/;
-  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, 3412); nit_exit(1);}
-  variable[16] =  variable[10] /*nodearraylist2*/;
-  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, 3414); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist3*/;
-  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, 3416); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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, 3418); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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, 3420); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[12] =  variable[19] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode8*/,  variable[19] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3441, LOCATE_parser___ReduceAction57___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction57].i]) return;
-  return_label147: while(false);
-  init_table[VAL2OBJ( self)->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, 3445, LOCATE_parser___ReduceAction58___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  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, 3461); nit_exit(1);}
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  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, 3463); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  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, 3465); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist4*/;
-  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, 3467); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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, 3469); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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, 3471); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[13] =  variable[21] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3492, LOCATE_parser___ReduceAction58___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction58].i]) return;
-  return_label149: while(false);
-  init_table[VAL2OBJ( self)->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, 3496, LOCATE_parser___ReduceAction59___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[11] /*nodearraylist1*/;
-  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, 3511); nit_exit(1);}
-  variable[16] =  variable[10] /*nodearraylist2*/;
-  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, 3513); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist3*/;
-  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, 3515); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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, 3517); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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, 3519); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[13] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3540, LOCATE_parser___ReduceAction59___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction59].i]) return;
-  return_label151: while(false);
-  init_table[VAL2OBJ( self)->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, 3544, LOCATE_parser___ReduceAction60___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  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, 3560); nit_exit(1);}
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  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, 3562); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  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, 3564); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist4*/;
-  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, 3566); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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, 3568); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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, 3570); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[14] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3591, LOCATE_parser___ReduceAction60___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction60].i]) return;
-  return_label153: while(false);
-  init_table[VAL2OBJ( self)->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, 3595, LOCATE_parser___ReduceAction61___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  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, 3611); nit_exit(1);}
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  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, 3613); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  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, 3615); nit_exit(1);}
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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, 3617); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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, 3619); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[13] =  variable[20] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[20] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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, 3628); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[14] =  variable[21] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode10*/,  variable[21] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3649, LOCATE_parser___ReduceAction61___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction61].i]) return;
-  return_label155: while(false);
-  init_table[VAL2OBJ( self)->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, 3653, LOCATE_parser___ReduceAction62___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  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, 3670); nit_exit(1);}
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  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, 3672); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  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, 3674); nit_exit(1);}
-  variable[20] =  variable[10] /*nodearraylist4*/;
-  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, 3676); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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, 3678); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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, 3680); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[14] =  variable[22] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  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, 3689); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[15] =  variable[23] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3710, LOCATE_parser___ReduceAction62___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction62].i]) return;
-  return_label157: while(false);
-  init_table[VAL2OBJ( self)->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, 3714, LOCATE_parser___ReduceAction63___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  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, 3730); nit_exit(1);}
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  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, 3732); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  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, 3734); nit_exit(1);}
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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, 3736); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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, 3738); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[20] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[20] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode10*/,  variable[20] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3755, LOCATE_parser___ReduceAction63___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction63].i]) return;
-  return_label159: while(false);
-  init_table[VAL2OBJ( self)->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, 3759, LOCATE_parser___ReduceAction64___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  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, 3776); nit_exit(1);}
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  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, 3778); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  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, 3780); nit_exit(1);}
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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, 3782); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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, 3784); nit_exit(1);}
-  variable[22] =  variable[6] /*nodearraylist8*/;
-  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, 3786); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[21] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode11*/,  variable[21] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[16] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3810, LOCATE_parser___ReduceAction64___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction64].i]) return;
-  return_label161: while(false);
-  init_table[VAL2OBJ( self)->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, 3814, LOCATE_parser___ReduceAction65___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  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, 3831); nit_exit(1);}
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  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, 3833); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  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, 3835); nit_exit(1);}
-  variable[20] =  variable[10] /*nodearraylist4*/;
-  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, 3837); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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, 3839); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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, 3841); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[22] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode10*/,  variable[22] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3858, LOCATE_parser___ReduceAction65___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction65].i]) return;
-  return_label163: while(false);
-  init_table[VAL2OBJ( self)->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, 3862, LOCATE_parser___ReduceAction66___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  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, 3880); nit_exit(1);}
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  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, 3882); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  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, 3884); nit_exit(1);}
-  variable[21] =  variable[11] /*nodearraylist4*/;
-  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, 3886); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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, 3888); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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, 3890); nit_exit(1);}
-  variable[24] =  variable[6] /*nodearraylist9*/;
-  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, 3892); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[23] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode11*/,  variable[23] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[24] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3916, LOCATE_parser___ReduceAction66___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction66].i]) return;
-  return_label165: while(false);
-  init_table[VAL2OBJ( self)->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, 3920, LOCATE_parser___ReduceAction67___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  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, 3937); nit_exit(1);}
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  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, 3939); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  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, 3941); nit_exit(1);}
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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, 3943); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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, 3945); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[14] =  variable[21] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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, 3954); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 3971, LOCATE_parser___ReduceAction67___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction67].i]) return;
-  return_label167: while(false);
-  init_table[VAL2OBJ( self)->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, 3975, LOCATE_parser___ReduceAction68___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  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, 3993); nit_exit(1);}
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  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, 3995); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  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, 3997); nit_exit(1);}
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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, 3999); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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, 4001); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[15] =  variable[22] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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, 4010); nit_exit(1);}
-  variable[24] =  variable[6] /*nodearraylist9*/;
-  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, 4012); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4036, LOCATE_parser___ReduceAction68___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction68].i]) return;
-  return_label169: while(false);
-  init_table[VAL2OBJ( self)->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, 4040, LOCATE_parser___ReduceAction69___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  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, 4058); nit_exit(1);}
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  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, 4060); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  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, 4062); nit_exit(1);}
-  variable[21] =  variable[11] /*nodearraylist4*/;
-  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, 4064); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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, 4066); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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, 4068); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[15] =  variable[23] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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, 4077); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4094, LOCATE_parser___ReduceAction69___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction69].i]) return;
-  return_label171: while(false);
-  init_table[VAL2OBJ( self)->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, 4098, LOCATE_parser___ReduceAction70___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  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, 4117); nit_exit(1);}
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  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, 4119); nit_exit(1);}
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  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, 4121); nit_exit(1);}
-  variable[22] =  variable[12] /*nodearraylist4*/;
-  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, 4123); nit_exit(1);}
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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, 4125); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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, 4127); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[16] =  variable[24] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  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, 4136); nit_exit(1);}
-  variable[26] =  variable[6] /*nodearraylist10*/;
-  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, 4138); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4162, LOCATE_parser___ReduceAction70___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction70].i]) return;
-  return_label173: while(false);
-  init_table[VAL2OBJ( self)->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, 4166, LOCATE_parser___ReduceAction71___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  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, 4183); nit_exit(1);}
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  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, 4185); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  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, 4187); nit_exit(1);}
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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, 4189); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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, 4191); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[15] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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, 4200); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4217, LOCATE_parser___ReduceAction71___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction71].i]) return;
-  return_label175: while(false);
-  init_table[VAL2OBJ( self)->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, 4221, LOCATE_parser___ReduceAction72___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  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, 4239); nit_exit(1);}
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  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, 4241); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  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, 4243); nit_exit(1);}
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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, 4245); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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, 4247); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[16] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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, 4256); nit_exit(1);}
-  variable[24] =  variable[6] /*nodearraylist9*/;
-  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, 4258); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4282, LOCATE_parser___ReduceAction72___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction72].i]) return;
-  return_label177: while(false);
-  init_table[VAL2OBJ( self)->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, 4286, LOCATE_parser___ReduceAction73___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  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, 4304); nit_exit(1);}
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  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, 4306); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  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, 4308); nit_exit(1);}
-  variable[21] =  variable[11] /*nodearraylist4*/;
-  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, 4310); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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, 4312); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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, 4314); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[16] =  variable[23] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[23] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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, 4323); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4340, LOCATE_parser___ReduceAction73___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction73].i]) return;
-  return_label179: while(false);
-  init_table[VAL2OBJ( self)->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, 4344, LOCATE_parser___ReduceAction74___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  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, 4363); nit_exit(1);}
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  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, 4365); nit_exit(1);}
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  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, 4367); nit_exit(1);}
-  variable[22] =  variable[12] /*nodearraylist4*/;
-  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, 4369); nit_exit(1);}
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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, 4371); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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, 4373); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[24] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  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, 4382); nit_exit(1);}
-  variable[26] =  variable[6] /*nodearraylist10*/;
-  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, 4384); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4408, LOCATE_parser___ReduceAction74___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction74].i]) return;
-  return_label181: while(false);
-  init_table[VAL2OBJ( self)->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, 4412, LOCATE_parser___ReduceAction75___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  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, 4430); nit_exit(1);}
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  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, 4432); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  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, 4434); nit_exit(1);}
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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, 4436); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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, 4438); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[15] =  variable[22] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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, 4447); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[16] =  variable[23] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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, 4456); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode12*/,  variable[24] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4473, LOCATE_parser___ReduceAction75___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction75].i]) return;
-  return_label183: while(false);
-  init_table[VAL2OBJ( self)->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, 4477, LOCATE_parser___ReduceAction76___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  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, 4496); nit_exit(1);}
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  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, 4498); nit_exit(1);}
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  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, 4500); nit_exit(1);}
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  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, 4502); nit_exit(1);}
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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, 4504); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[16] =  variable[23] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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, 4513); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode10*/,  variable[24] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  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, 4522); nit_exit(1);}
-  variable[26] =  variable[6] /*nodearraylist10*/;
-  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, 4524); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[25] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode13*/,  variable[25] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode12*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode12*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode13*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode12*/ /*listnode13=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode13*/,  variable[26] /*listnode12*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4548, LOCATE_parser___ReduceAction76___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction76].i]) return;
-  return_label185: while(false);
-  init_table[VAL2OBJ( self)->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, 4552, LOCATE_parser___ReduceAction77___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  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, 4571); nit_exit(1);}
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  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, 4573); nit_exit(1);}
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  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, 4575); nit_exit(1);}
-  variable[22] =  variable[12] /*nodearraylist4*/;
-  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, 4577); nit_exit(1);}
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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, 4579); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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, 4581); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[16] =  variable[24] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  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, 4590); nit_exit(1);}
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[25] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[26])) { /*if*/
-    variable[26] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[26])) { /*if*/
-      variable[17] =  variable[25] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode10*/,  variable[25] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  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, 4599); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[26] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode12*/,  variable[26] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4616, LOCATE_parser___ReduceAction77___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction77].i]) return;
-  return_label187: while(false);
-  init_table[VAL2OBJ( self)->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, 4620, LOCATE_parser___ReduceAction78___action};
-  val_t variable[31];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[17] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[16] /*nodearraylist1*/;
-  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, 4640); nit_exit(1);}
-  variable[21] =  variable[15] /*nodearraylist2*/;
-  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, 4642); nit_exit(1);}
-  variable[22] =  variable[14] /*nodearraylist3*/;
-  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, 4644); nit_exit(1);}
-  variable[23] =  variable[13] /*nodearraylist4*/;
-  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, 4646); nit_exit(1);}
-  variable[24] =  variable[11] /*nodearraylist6*/;
-  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, 4648); nit_exit(1);}
-  variable[25] =  variable[10] /*nodearraylist7*/;
-  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, 4650); nit_exit(1);}
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[25] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[26])) { /*if*/
-    variable[26] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[26])) { /*if*/
-      variable[17] =  variable[25] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode8*/,  variable[25] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] =  variable[9] /*nodearraylist8*/;
-  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, 4659); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode10*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode10*/,  variable[26] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[27] =  variable[8] /*nodearraylist9*/;
-  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, 4668); nit_exit(1);}
-  variable[28] =  variable[6] /*nodearraylist11*/;
-  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, 4670); nit_exit(1);}
-  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[27] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[27] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[27] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[27] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[27] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[27] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[29])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[19] /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable[19] /*listnode13*/,  variable[27] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[28] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[28] /*listnode12*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[28] /*listnode12*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[28] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[28] /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable[28] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[29])) { /*if*/
-    variable[29] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode13*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[29])) { /*if*/
-      variable[19] =  variable[28] /*listnode12*/ /*listnode13=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode13*/,  variable[28] /*listnode12*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[30] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4694, LOCATE_parser___ReduceAction78___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction78].i]) return;
-  return_label189: while(false);
-  init_table[VAL2OBJ( self)->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, 4698, LOCATE_parser___ReduceAction79___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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, 4703); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4710, LOCATE_parser___ReduceAction79___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction79].i]) return;
-  return_label191: while(false);
-  init_table[VAL2OBJ( self)->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, 4714, LOCATE_parser___ReduceAction80___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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, 4720); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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, 4722); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4730, LOCATE_parser___ReduceAction80___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction80].i]) return;
-  return_label193: while(false);
-  init_table[VAL2OBJ( self)->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, 4734, LOCATE_parser___ReduceAction81___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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, 4739); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4746, LOCATE_parser___ReduceAction81___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction81].i]) return;
-  return_label195: while(false);
-  init_table[VAL2OBJ( self)->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, 4750, LOCATE_parser___ReduceAction82___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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, 4755); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4762, LOCATE_parser___ReduceAction82___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction82].i]) return;
-  return_label197: while(false);
-  init_table[VAL2OBJ( self)->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, 4766, LOCATE_parser___ReduceAction83___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  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, 4776); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pformaldefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4783, LOCATE_parser___ReduceAction83___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction83].i]) return;
-  return_label199: while(false);
-  init_table[VAL2OBJ( self)->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, 4787, LOCATE_parser___ReduceAction84___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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, 4798); nit_exit(1);}
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  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, 4800); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pformaldefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4814, LOCATE_parser___ReduceAction84___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction84].i]) return;
-  return_label201: while(false);
-  init_table[VAL2OBJ( self)->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, 4818, LOCATE_parser___ReduceAction85___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  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, 4825); nit_exit(1);}
-  variable[3] =  variable[7] /*pformaldefnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(8)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4829, LOCATE_parser___ReduceAction85___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction85].i]) return;
-  return_label203: while(false);
-  init_table[VAL2OBJ( self)->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, 4833, LOCATE_parser___ReduceAction86___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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, 4838); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4846, LOCATE_parser___ReduceAction86___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction86].i]) return;
-  return_label205: while(false);
-  init_table[VAL2OBJ( self)->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, 4850, LOCATE_parser___ReduceAction87___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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, 4856); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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, 4858); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4866, LOCATE_parser___ReduceAction87___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction87].i]) return;
-  return_label207: while(false);
-  init_table[VAL2OBJ( self)->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, 4870, LOCATE_parser___ReduceAction88___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist2*/;
-  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, 4878); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 4880); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(10)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4888, LOCATE_parser___ReduceAction88___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction88].i]) return;
-  return_label209: while(false);
-  init_table[VAL2OBJ( self)->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, 4892, LOCATE_parser___ReduceAction89___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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, 4898); nit_exit(1);}
-  variable[3] =  variable[6] /*ppropdefnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(11)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 4902, LOCATE_parser___ReduceAction89___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction89].i]) return;
-  return_label211: while(false);
-  init_table[VAL2OBJ( self)->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, 4906, LOCATE_parser___ReduceAction90___action};
-  val_t variable[20];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction90___action, LOCATE_parser, 4916); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction90___action, LOCATE_parser, 4918); nit_exit(1);}
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction90___action, LOCATE_parser, 4924); nit_exit(1);}
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[13] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction90___action, LOCATE_parser, 4930); nit_exit(1);}
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction90___action, LOCATE_parser, 4932); nit_exit(1);}
-  variable[17] =  variable[4] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode12*/, 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___ReduceAction90___action, LOCATE_parser, 4934); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  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, 4949, LOCATE_parser___ReduceAction90___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction90].i]) return;
-  return_label213: while(false);
-  init_table[VAL2OBJ( self)->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, 4953, LOCATE_parser___ReduceAction91___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction91___action, LOCATE_parser, 4964); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction91___action, LOCATE_parser, 4966); nit_exit(1);}
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction91___action, LOCATE_parser, 4972); nit_exit(1);}
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction91___action, LOCATE_parser, 4974); nit_exit(1);}
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[14] /*tkwredefnode7*/,  variable[15] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction91___action, LOCATE_parser, 4980); nit_exit(1);}
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction91___action, LOCATE_parser, 4982); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode12*/, 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___ReduceAction91___action, LOCATE_parser, 4984); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 4999, LOCATE_parser___ReduceAction91___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction91].i]) return;
-  return_label215: while(false);
-  init_table[VAL2OBJ( self)->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, 5003, LOCATE_parser___ReduceAction92___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction92___action, LOCATE_parser, 5012); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction92___action, LOCATE_parser, 5014); nit_exit(1);}
-  variable[12] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[10] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction92___action, LOCATE_parser, 5020); nit_exit(1);}
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction92___action, LOCATE_parser, 5022); nit_exit(1);}
-  variable[14] =  variable[4] /*nodearraylist5*/;
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode10*/, 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___ReduceAction92___action, LOCATE_parser, 5024); nit_exit(1);}
-  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*/,  variable[14] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 5039, LOCATE_parser___ReduceAction92___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction92].i]) return;
-  return_label217: while(false);
-  init_table[VAL2OBJ( self)->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, 5043, LOCATE_parser___ReduceAction93___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction93___action, LOCATE_parser, 5054); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction93___action, LOCATE_parser, 5056); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction93___action, LOCATE_parser, 5058); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction93___action, LOCATE_parser, 5064); nit_exit(1);}
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction93___action, LOCATE_parser, 5070); nit_exit(1);}
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction93___action, LOCATE_parser, 5072); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode12*/, 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___ReduceAction93___action, LOCATE_parser, 5074); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 5089, LOCATE_parser___ReduceAction93___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction93].i]) return;
-  return_label219: while(false);
-  init_table[VAL2OBJ( self)->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, 5093, LOCATE_parser___ReduceAction94___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction94___action, LOCATE_parser, 5105); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction94___action, LOCATE_parser, 5107); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction94___action, LOCATE_parser, 5109); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction94___action, LOCATE_parser, 5115); nit_exit(1);}
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction94___action, LOCATE_parser, 5117); nit_exit(1);}
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode7*/,  variable[17] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction94___action, LOCATE_parser, 5123); nit_exit(1);}
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction94___action, LOCATE_parser, 5125); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode12*/, 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___ReduceAction94___action, LOCATE_parser, 5127); nit_exit(1);}
-  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*/,  variable[21] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 5142, LOCATE_parser___ReduceAction94___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction94].i]) return;
-  return_label221: while(false);
-  init_table[VAL2OBJ( self)->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, 5146, LOCATE_parser___ReduceAction95___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction95___action, LOCATE_parser, 5156); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction95___action, LOCATE_parser, 5158); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction95___action, LOCATE_parser, 5160); nit_exit(1);}
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[11] /*tkwredefnode4*/,  variable[12] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction95___action, LOCATE_parser, 5166); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction95___action, LOCATE_parser, 5168); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode10*/, 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___ReduceAction95___action, LOCATE_parser, 5170); nit_exit(1);}
-  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*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 5185, LOCATE_parser___ReduceAction95___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction95].i]) return;
-  return_label223: while(false);
-  init_table[VAL2OBJ( self)->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, 5189, LOCATE_parser___ReduceAction96___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction96___action, LOCATE_parser, 5198); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction96___action, LOCATE_parser, 5200); nit_exit(1);}
-  variable[12] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[10] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[11] = variable[12];
-  variable[12] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction96___action, LOCATE_parser, 5206); nit_exit(1);}
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction96___action, LOCATE_parser, 5208); nit_exit(1);}
-  variable[14] =  variable[4] /*nodearraylist5*/;
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode10*/, 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___ReduceAction96___action, LOCATE_parser, 5210); nit_exit(1);}
-  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*/,  variable[14] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 5225, LOCATE_parser___ReduceAction96___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction96].i]) return;
-  return_label225: while(false);
-  init_table[VAL2OBJ( self)->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, 5229, LOCATE_parser___ReduceAction97___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction97___action, LOCATE_parser, 5239); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction97___action, LOCATE_parser, 5241); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction97___action, LOCATE_parser, 5243); nit_exit(1);}
-  variable[14] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[11] /*tkwredefnode5*/,  variable[12] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction97___action, LOCATE_parser, 5249); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction97___action, LOCATE_parser, 5251); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode10*/, 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___ReduceAction97___action, LOCATE_parser, 5253); nit_exit(1);}
-  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*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 5268, LOCATE_parser___ReduceAction97___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction97].i]) return;
-  return_label227: while(false);
-  init_table[VAL2OBJ( self)->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, 5272, LOCATE_parser___ReduceAction98___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction98___action, LOCATE_parser, 5280); nit_exit(1);}
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction98___action, LOCATE_parser, 5282); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction98___action, LOCATE_parser, 5284); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode8*/, 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___ReduceAction98___action, LOCATE_parser, 5286); nit_exit(1);}
-  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*/,  variable[11] /*tattridnode8*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*ppropdefnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 5301, LOCATE_parser___ReduceAction98___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction98].i]) return;
-  return_label229: while(false);
-  init_table[VAL2OBJ( self)->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, 5305, LOCATE_parser___ReduceAction99___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction99___action, LOCATE_parser, 5316); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction99___action, LOCATE_parser, 5318); nit_exit(1);}
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction99___action, LOCATE_parser, 5324); nit_exit(1);}
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction99___action, LOCATE_parser, 5330); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction99___action, LOCATE_parser, 5332); nit_exit(1);}
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction99___action, LOCATE_parser, 5334); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode12*/, 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___ReduceAction99___action, LOCATE_parser, 5336); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 5351, LOCATE_parser___ReduceAction99___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction99].i]) return;
-  return_label231: while(false);
-  init_table[VAL2OBJ( self)->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, 5355, LOCATE_parser___ReduceAction100___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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, 5367); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction100___action, LOCATE_parser, 5369); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction100___action, LOCATE_parser, 5375); nit_exit(1);}
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction100___action, LOCATE_parser, 5377); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode7*/,  variable[16] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction100___action, LOCATE_parser, 5383); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction100___action, LOCATE_parser, 5385); nit_exit(1);}
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction100___action, LOCATE_parser, 5387); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode12*/, 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___ReduceAction100___action, LOCATE_parser, 5389); nit_exit(1);}
-  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*/,  variable[21] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 5404, LOCATE_parser___ReduceAction100___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction100].i]) return;
-  return_label233: while(false);
-  init_table[VAL2OBJ( self)->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, 5408, LOCATE_parser___ReduceAction101___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction101___action, LOCATE_parser, 5418); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction101___action, LOCATE_parser, 5420); nit_exit(1);}
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction101___action, LOCATE_parser, 5426); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction101___action, LOCATE_parser, 5428); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction101___action, LOCATE_parser, 5430); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode10*/, 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___ReduceAction101___action, LOCATE_parser, 5432); nit_exit(1);}
-  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*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 5447, LOCATE_parser___ReduceAction101___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction101].i]) return;
-  return_label235: while(false);
-  init_table[VAL2OBJ( self)->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, 5451, LOCATE_parser___ReduceAction102___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction102___action, LOCATE_parser, 5463); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction102___action, LOCATE_parser, 5465); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction102___action, LOCATE_parser, 5467); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction102___action, LOCATE_parser, 5473); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction102___action, LOCATE_parser, 5479); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction102___action, LOCATE_parser, 5481); nit_exit(1);}
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction102___action, LOCATE_parser, 5483); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode12*/, 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___ReduceAction102___action, LOCATE_parser, 5485); nit_exit(1);}
-  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*/,  variable[21] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 5500, LOCATE_parser___ReduceAction102___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction102].i]) return;
-  return_label237: while(false);
-  init_table[VAL2OBJ( self)->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, 5504, LOCATE_parser___ReduceAction103___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction103___action, LOCATE_parser, 5517); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction103___action, LOCATE_parser, 5519); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction103___action, LOCATE_parser, 5521); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction103___action, LOCATE_parser, 5527); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction103___action, LOCATE_parser, 5529); nit_exit(1);}
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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___ReduceAction103___action, LOCATE_parser, 5535); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction103___action, LOCATE_parser, 5537); nit_exit(1);}
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  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___ReduceAction103___action, LOCATE_parser, 5539); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode12*/, 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___ReduceAction103___action, LOCATE_parser, 5541); nit_exit(1);}
-  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*/,  variable[23] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 5556, LOCATE_parser___ReduceAction103___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction103].i]) return;
-  return_label239: while(false);
-  init_table[VAL2OBJ( self)->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, 5560, LOCATE_parser___ReduceAction104___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction104___action, LOCATE_parser, 5571); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction104___action, LOCATE_parser, 5573); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction104___action, LOCATE_parser, 5575); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction104___action, LOCATE_parser, 5581); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction104___action, LOCATE_parser, 5583); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction104___action, LOCATE_parser, 5585); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode10*/, 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___ReduceAction104___action, LOCATE_parser, 5587); nit_exit(1);}
-  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*/,  variable[18] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 5602, LOCATE_parser___ReduceAction104___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction104].i]) return;
-  return_label241: while(false);
-  init_table[VAL2OBJ( self)->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, 5606, LOCATE_parser___ReduceAction105___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction105___action, LOCATE_parser, 5616); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction105___action, LOCATE_parser, 5618); nit_exit(1);}
-  variable[13] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[11] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction105___action, LOCATE_parser, 5624); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction105___action, LOCATE_parser, 5626); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction105___action, LOCATE_parser, 5628); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode10*/, 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___ReduceAction105___action, LOCATE_parser, 5630); nit_exit(1);}
-  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*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 5645, LOCATE_parser___ReduceAction105___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction105].i]) return;
-  return_label243: while(false);
-  init_table[VAL2OBJ( self)->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, 5649, LOCATE_parser___ReduceAction106___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction106___action, LOCATE_parser, 5660); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction106___action, LOCATE_parser, 5662); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction106___action, LOCATE_parser, 5664); nit_exit(1);}
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[12] /*tkwredefnode5*/,  variable[13] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction106___action, LOCATE_parser, 5670); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction106___action, LOCATE_parser, 5672); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction106___action, LOCATE_parser, 5674); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode10*/, 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___ReduceAction106___action, LOCATE_parser, 5676); nit_exit(1);}
-  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*/,  variable[18] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 5691, LOCATE_parser___ReduceAction106___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction106].i]) return;
-  return_label245: while(false);
-  init_table[VAL2OBJ( self)->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, 5695, LOCATE_parser___ReduceAction107___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction107___action, LOCATE_parser, 5704); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction107___action, LOCATE_parser, 5706); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction107___action, LOCATE_parser, 5708); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction107___action, LOCATE_parser, 5710); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  variable[14] = TAG_Bool(( variable[13] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[13] /*tattridnode8*/, 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___ReduceAction107___action, LOCATE_parser, 5712); nit_exit(1);}
-  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*/,  variable[13] /*tattridnode8*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 5727, LOCATE_parser___ReduceAction107___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction107].i]) return;
-  return_label247: while(false);
-  init_table[VAL2OBJ( self)->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, 5731, LOCATE_parser___ReduceAction108___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction108___action, LOCATE_parser, 5742); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction108___action, LOCATE_parser, 5744); nit_exit(1);}
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction108___action, LOCATE_parser, 5750); nit_exit(1);}
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction108___action, LOCATE_parser, 5756); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction108___action, LOCATE_parser, 5758); nit_exit(1);}
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode12*/, 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___ReduceAction108___action, LOCATE_parser, 5760); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode13*/, 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___ReduceAction108___action, LOCATE_parser, 5762); nit_exit(1);}
-  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*/,  variable[18] /*tattridnode12*/,  variable[19] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 5777, LOCATE_parser___ReduceAction108___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction108].i]) return;
-  return_label249: while(false);
-  init_table[VAL2OBJ( self)->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, 5781, LOCATE_parser___ReduceAction109___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction109___action, LOCATE_parser, 5793); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction109___action, LOCATE_parser, 5795); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction109___action, LOCATE_parser, 5801); nit_exit(1);}
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction109___action, LOCATE_parser, 5803); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode7*/,  variable[16] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction109___action, LOCATE_parser, 5809); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction109___action, LOCATE_parser, 5811); nit_exit(1);}
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode12*/, 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___ReduceAction109___action, LOCATE_parser, 5813); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode13*/, 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___ReduceAction109___action, LOCATE_parser, 5815); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode12*/,  variable[21] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 5830, LOCATE_parser___ReduceAction109___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction109].i]) return;
-  return_label251: while(false);
-  init_table[VAL2OBJ( self)->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, 5834, LOCATE_parser___ReduceAction110___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction110___action, LOCATE_parser, 5844); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction110___action, LOCATE_parser, 5846); nit_exit(1);}
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction110___action, LOCATE_parser, 5852); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction110___action, LOCATE_parser, 5854); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode10*/, 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___ReduceAction110___action, LOCATE_parser, 5856); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode11*/, 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___ReduceAction110___action, LOCATE_parser, 5858); nit_exit(1);}
-  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*/,  variable[15] /*tattridnode10*/,  variable[16] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 5873, LOCATE_parser___ReduceAction110___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction110].i]) return;
-  return_label253: while(false);
-  init_table[VAL2OBJ( self)->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, 5877, LOCATE_parser___ReduceAction111___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction111___action, LOCATE_parser, 5889); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction111___action, LOCATE_parser, 5891); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction111___action, LOCATE_parser, 5893); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction111___action, LOCATE_parser, 5899); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction111___action, LOCATE_parser, 5905); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction111___action, LOCATE_parser, 5907); nit_exit(1);}
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode12*/, 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___ReduceAction111___action, LOCATE_parser, 5909); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode13*/, 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___ReduceAction111___action, LOCATE_parser, 5911); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode12*/,  variable[21] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 5926, LOCATE_parser___ReduceAction111___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction111].i]) return;
-  return_label255: while(false);
-  init_table[VAL2OBJ( self)->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, 5930, LOCATE_parser___ReduceAction112___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction112___action, LOCATE_parser, 5943); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction112___action, LOCATE_parser, 5945); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction112___action, LOCATE_parser, 5947); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction112___action, LOCATE_parser, 5953); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction112___action, LOCATE_parser, 5955); nit_exit(1);}
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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___ReduceAction112___action, LOCATE_parser, 5961); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction112___action, LOCATE_parser, 5963); nit_exit(1);}
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode12*/, 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___ReduceAction112___action, LOCATE_parser, 5965); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode13*/, 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___ReduceAction112___action, LOCATE_parser, 5967); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode12*/,  variable[23] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 5982, LOCATE_parser___ReduceAction112___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction112].i]) return;
-  return_label257: while(false);
-  init_table[VAL2OBJ( self)->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, 5986, LOCATE_parser___ReduceAction113___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction113___action, LOCATE_parser, 5997); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction113___action, LOCATE_parser, 5999); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction113___action, LOCATE_parser, 6001); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction113___action, LOCATE_parser, 6007); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction113___action, LOCATE_parser, 6009); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode10*/, 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___ReduceAction113___action, LOCATE_parser, 6011); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode11*/, 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___ReduceAction113___action, LOCATE_parser, 6013); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 6028, LOCATE_parser___ReduceAction113___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction113].i]) return;
-  return_label259: while(false);
-  init_table[VAL2OBJ( self)->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, 6032, LOCATE_parser___ReduceAction114___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction114___action, LOCATE_parser, 6042); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction114___action, LOCATE_parser, 6044); nit_exit(1);}
-  variable[13] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[11] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[12] = variable[13];
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction114___action, LOCATE_parser, 6050); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction114___action, LOCATE_parser, 6052); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode10*/, 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___ReduceAction114___action, LOCATE_parser, 6054); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode11*/, 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___ReduceAction114___action, LOCATE_parser, 6056); nit_exit(1);}
-  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*/,  variable[15] /*tattridnode10*/,  variable[16] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 6071, LOCATE_parser___ReduceAction114___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction114].i]) return;
-  return_label261: while(false);
-  init_table[VAL2OBJ( self)->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, 6075, LOCATE_parser___ReduceAction115___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction115___action, LOCATE_parser, 6086); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction115___action, LOCATE_parser, 6088); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction115___action, LOCATE_parser, 6090); nit_exit(1);}
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[12] /*tkwredefnode5*/,  variable[13] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction115___action, LOCATE_parser, 6096); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction115___action, LOCATE_parser, 6098); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode10*/, 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___ReduceAction115___action, LOCATE_parser, 6100); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode11*/, 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___ReduceAction115___action, LOCATE_parser, 6102); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 6117, LOCATE_parser___ReduceAction115___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction115].i]) return;
-  return_label263: while(false);
-  init_table[VAL2OBJ( self)->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, 6121, LOCATE_parser___ReduceAction116___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction116___action, LOCATE_parser, 6130); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction116___action, LOCATE_parser, 6132); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction116___action, LOCATE_parser, 6134); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  variable[13] = TAG_Bool(( variable[12] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[12] /*tattridnode8*/, 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___ReduceAction116___action, LOCATE_parser, 6136); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode9*/, 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___ReduceAction116___action, LOCATE_parser, 6138); nit_exit(1);}
-  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*/,  variable[12] /*tattridnode8*/,  variable[13] /*ptypenode9*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 6153, LOCATE_parser___ReduceAction116___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction116].i]) return;
-  return_label265: while(false);
-  init_table[VAL2OBJ( self)->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, 6157, LOCATE_parser___ReduceAction117___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction117___action, LOCATE_parser, 6169); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction117___action, LOCATE_parser, 6171); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction117___action, LOCATE_parser, 6177); nit_exit(1);}
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction117___action, LOCATE_parser, 6183); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction117___action, LOCATE_parser, 6185); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction117___action, LOCATE_parser, 6187); nit_exit(1);}
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode12*/, 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___ReduceAction117___action, LOCATE_parser, 6189); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode13*/, 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___ReduceAction117___action, LOCATE_parser, 6191); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode12*/,  variable[21] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 6206, LOCATE_parser___ReduceAction117___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction117].i]) return;
-  return_label267: while(false);
-  init_table[VAL2OBJ( self)->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, 6210, LOCATE_parser___ReduceAction118___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction118___action, LOCATE_parser, 6223); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction118___action, LOCATE_parser, 6225); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction118___action, LOCATE_parser, 6231); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction118___action, LOCATE_parser, 6233); nit_exit(1);}
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode7*/,  variable[17] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction118___action, LOCATE_parser, 6239); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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___ReduceAction118___action, LOCATE_parser, 6241); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction118___action, LOCATE_parser, 6243); nit_exit(1);}
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode12*/, 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___ReduceAction118___action, LOCATE_parser, 6245); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode13*/, 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___ReduceAction118___action, LOCATE_parser, 6247); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode12*/,  variable[23] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 6262, LOCATE_parser___ReduceAction118___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction118].i]) return;
-  return_label269: while(false);
-  init_table[VAL2OBJ( self)->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, 6266, LOCATE_parser___ReduceAction119___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction119___action, LOCATE_parser, 6277); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction119___action, LOCATE_parser, 6279); nit_exit(1);}
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction119___action, LOCATE_parser, 6285); nit_exit(1);}
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction119___action, LOCATE_parser, 6287); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction119___action, LOCATE_parser, 6289); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode10*/, 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___ReduceAction119___action, LOCATE_parser, 6291); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode11*/, 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___ReduceAction119___action, LOCATE_parser, 6293); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 6308, LOCATE_parser___ReduceAction119___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction119].i]) return;
-  return_label271: while(false);
-  init_table[VAL2OBJ( self)->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, 6312, LOCATE_parser___ReduceAction120___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction120___action, LOCATE_parser, 6325); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction120___action, LOCATE_parser, 6327); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction120___action, LOCATE_parser, 6329); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction120___action, LOCATE_parser, 6335); nit_exit(1);}
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction120___action, LOCATE_parser, 6341); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  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___ReduceAction120___action, LOCATE_parser, 6343); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction120___action, LOCATE_parser, 6345); nit_exit(1);}
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode12*/, 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___ReduceAction120___action, LOCATE_parser, 6347); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode13*/, 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___ReduceAction120___action, LOCATE_parser, 6349); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode12*/,  variable[23] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 6364, LOCATE_parser___ReduceAction120___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction120].i]) return;
-  return_label273: while(false);
-  init_table[VAL2OBJ( self)->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, 6368, LOCATE_parser___ReduceAction121___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction121___action, LOCATE_parser, 6382); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction121___action, LOCATE_parser, 6384); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction121___action, LOCATE_parser, 6386); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction121___action, LOCATE_parser, 6392); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction121___action, LOCATE_parser, 6394); nit_exit(1);}
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction121___action, LOCATE_parser, 6400); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction121___action, LOCATE_parser, 6402); nit_exit(1);}
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  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___ReduceAction121___action, LOCATE_parser, 6404); nit_exit(1);}
-  variable[24] =  variable[5] /*nodearraylist9*/;
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode12*/, 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___ReduceAction121___action, LOCATE_parser, 6406); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[25] /*ptypenode13*/, 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___ReduceAction121___action, LOCATE_parser, 6408); nit_exit(1);}
-  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*/,  variable[24] /*tattridnode12*/,  variable[25] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 6423, LOCATE_parser___ReduceAction121___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction121].i]) return;
-  return_label275: while(false);
-  init_table[VAL2OBJ( self)->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, 6427, LOCATE_parser___ReduceAction122___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction122___action, LOCATE_parser, 6439); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction122___action, LOCATE_parser, 6441); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction122___action, LOCATE_parser, 6443); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction122___action, LOCATE_parser, 6449); nit_exit(1);}
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction122___action, LOCATE_parser, 6451); nit_exit(1);}
-  variable[18] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction122___action, LOCATE_parser, 6453); nit_exit(1);}
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode10*/, 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___ReduceAction122___action, LOCATE_parser, 6455); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode11*/, 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___ReduceAction122___action, LOCATE_parser, 6457); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode10*/,  variable[20] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 6472, LOCATE_parser___ReduceAction122___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction122].i]) return;
-  return_label277: while(false);
-  init_table[VAL2OBJ( self)->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, 6476, LOCATE_parser___ReduceAction123___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction123___action, LOCATE_parser, 6487); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction123___action, LOCATE_parser, 6489); nit_exit(1);}
-  variable[14] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[12] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[13] = variable[14];
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction123___action, LOCATE_parser, 6495); nit_exit(1);}
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction123___action, LOCATE_parser, 6497); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction123___action, LOCATE_parser, 6499); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode10*/, 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___ReduceAction123___action, LOCATE_parser, 6501); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode11*/, 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___ReduceAction123___action, LOCATE_parser, 6503); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 6518, LOCATE_parser___ReduceAction123___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction123].i]) return;
-  return_label279: while(false);
-  init_table[VAL2OBJ( self)->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, 6522, LOCATE_parser___ReduceAction124___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction124___action, LOCATE_parser, 6534); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction124___action, LOCATE_parser, 6536); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction124___action, LOCATE_parser, 6538); nit_exit(1);}
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[13] /*tkwredefnode5*/,  variable[14] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction124___action, LOCATE_parser, 6544); nit_exit(1);}
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction124___action, LOCATE_parser, 6546); nit_exit(1);}
-  variable[18] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction124___action, LOCATE_parser, 6548); nit_exit(1);}
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode10*/, 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___ReduceAction124___action, LOCATE_parser, 6550); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode11*/, 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___ReduceAction124___action, LOCATE_parser, 6552); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode10*/,  variable[20] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 6567, LOCATE_parser___ReduceAction124___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction124].i]) return;
-  return_label281: while(false);
-  init_table[VAL2OBJ( self)->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, 6571, LOCATE_parser___ReduceAction125___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction125___action, LOCATE_parser, 6581); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction125___action, LOCATE_parser, 6583); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction125___action, LOCATE_parser, 6585); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction125___action, LOCATE_parser, 6587); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode8*/, 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___ReduceAction125___action, LOCATE_parser, 6589); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  variable[16] = TAG_Bool(( variable[15] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[15] /*ptypenode9*/, 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___ReduceAction125___action, LOCATE_parser, 6591); nit_exit(1);}
-  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*/,  variable[14] /*tattridnode8*/,  variable[15] /*ptypenode9*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 6606, LOCATE_parser___ReduceAction125___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction125].i]) return;
-  return_label283: while(false);
-  init_table[VAL2OBJ( self)->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, 6610, LOCATE_parser___ReduceAction126___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction126___action, LOCATE_parser, 6623); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction126___action, LOCATE_parser, 6625); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction126___action, LOCATE_parser, 6631); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction126___action, LOCATE_parser, 6637); nit_exit(1);}
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction126___action, LOCATE_parser, 6639); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode12*/, 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___ReduceAction126___action, LOCATE_parser, 6641); nit_exit(1);}
-  variable[21] =  variable[4] /*nodearraylist9*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode14*/, 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___ReduceAction126___action, LOCATE_parser, 6643); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[21] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 6658, LOCATE_parser___ReduceAction126___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction126].i]) return;
-  return_label285: while(false);
-  init_table[VAL2OBJ( self)->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, 6662, LOCATE_parser___ReduceAction127___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction127___action, LOCATE_parser, 6676); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction127___action, LOCATE_parser, 6678); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction127___action, LOCATE_parser, 6684); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction127___action, LOCATE_parser, 6686); nit_exit(1);}
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction127___action, LOCATE_parser, 6692); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction127___action, LOCATE_parser, 6694); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode12*/, 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___ReduceAction127___action, LOCATE_parser, 6696); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode14*/, 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___ReduceAction127___action, LOCATE_parser, 6698); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 6713, LOCATE_parser___ReduceAction127___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction127].i]) return;
-  return_label287: while(false);
-  init_table[VAL2OBJ( self)->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, 6717, LOCATE_parser___ReduceAction128___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction128___action, LOCATE_parser, 6729); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction128___action, LOCATE_parser, 6731); nit_exit(1);}
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction128___action, LOCATE_parser, 6737); nit_exit(1);}
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction128___action, LOCATE_parser, 6739); nit_exit(1);}
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode10*/, 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___ReduceAction128___action, LOCATE_parser, 6741); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode12*/, 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___ReduceAction128___action, LOCATE_parser, 6743); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 6758, LOCATE_parser___ReduceAction128___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction128].i]) return;
-  return_label289: while(false);
-  init_table[VAL2OBJ( self)->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, 6762, LOCATE_parser___ReduceAction129___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction129___action, LOCATE_parser, 6776); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction129___action, LOCATE_parser, 6778); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction129___action, LOCATE_parser, 6780); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction129___action, LOCATE_parser, 6786); nit_exit(1);}
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[18] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction129___action, LOCATE_parser, 6792); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction129___action, LOCATE_parser, 6794); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode12*/, 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___ReduceAction129___action, LOCATE_parser, 6796); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode14*/, 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___ReduceAction129___action, LOCATE_parser, 6798); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 6813, LOCATE_parser___ReduceAction129___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction129].i]) return;
-  return_label291: while(false);
-  init_table[VAL2OBJ( self)->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, 6817, LOCATE_parser___ReduceAction130___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction130___action, LOCATE_parser, 6832); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction130___action, LOCATE_parser, 6834); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction130___action, LOCATE_parser, 6836); nit_exit(1);}
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction130___action, LOCATE_parser, 6842); nit_exit(1);}
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction130___action, LOCATE_parser, 6844); nit_exit(1);}
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[19] /*tkwredefnode7*/,  variable[20] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction130___action, LOCATE_parser, 6850); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction130___action, LOCATE_parser, 6852); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode12*/, 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___ReduceAction130___action, LOCATE_parser, 6854); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode14*/, 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___ReduceAction130___action, LOCATE_parser, 6856); nit_exit(1);}
-  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*/,  variable[24] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 6871, LOCATE_parser___ReduceAction130___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction130].i]) return;
-  return_label293: while(false);
-  init_table[VAL2OBJ( self)->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, 6875, LOCATE_parser___ReduceAction131___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction131___action, LOCATE_parser, 6888); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction131___action, LOCATE_parser, 6890); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction131___action, LOCATE_parser, 6892); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction131___action, LOCATE_parser, 6898); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction131___action, LOCATE_parser, 6900); nit_exit(1);}
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode10*/, 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___ReduceAction131___action, LOCATE_parser, 6902); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction131___action, LOCATE_parser, 6904); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 6919, LOCATE_parser___ReduceAction131___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction131].i]) return;
-  return_label295: while(false);
-  init_table[VAL2OBJ( self)->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, 6923, LOCATE_parser___ReduceAction132___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction132___action, LOCATE_parser, 6935); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction132___action, LOCATE_parser, 6937); nit_exit(1);}
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[13] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[14] = variable[15];
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction132___action, LOCATE_parser, 6943); nit_exit(1);}
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction132___action, LOCATE_parser, 6945); nit_exit(1);}
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode10*/, 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___ReduceAction132___action, LOCATE_parser, 6947); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode12*/, 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___ReduceAction132___action, LOCATE_parser, 6949); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 6964, LOCATE_parser___ReduceAction132___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction132].i]) return;
-  return_label297: while(false);
-  init_table[VAL2OBJ( self)->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, 6968, LOCATE_parser___ReduceAction133___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction133___action, LOCATE_parser, 6981); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction133___action, LOCATE_parser, 6983); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction133___action, LOCATE_parser, 6985); nit_exit(1);}
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[14] /*tkwredefnode5*/,  variable[15] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction133___action, LOCATE_parser, 6991); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction133___action, LOCATE_parser, 6993); nit_exit(1);}
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode10*/, 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___ReduceAction133___action, LOCATE_parser, 6995); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction133___action, LOCATE_parser, 6997); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 7012, LOCATE_parser___ReduceAction133___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction133].i]) return;
-  return_label299: while(false);
-  init_table[VAL2OBJ( self)->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, 7016, LOCATE_parser___ReduceAction134___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction134___action, LOCATE_parser, 7027); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction134___action, LOCATE_parser, 7029); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction134___action, LOCATE_parser, 7031); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode8*/, 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___ReduceAction134___action, LOCATE_parser, 7033); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode10*/, 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___ReduceAction134___action, LOCATE_parser, 7035); nit_exit(1);}
-  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*/,  variable[14] /*tattridnode8*/,  NIT_NULL /*null*/,  variable[15] /*pexprnode10*/); /*new AAttrPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 7050, LOCATE_parser___ReduceAction134___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction134].i]) return;
-  return_label301: while(false);
-  init_table[VAL2OBJ( self)->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, 7054, LOCATE_parser___ReduceAction135___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction135___action, LOCATE_parser, 7068); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction135___action, LOCATE_parser, 7070); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction135___action, LOCATE_parser, 7076); nit_exit(1);}
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction135___action, LOCATE_parser, 7082); nit_exit(1);}
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction135___action, LOCATE_parser, 7084); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction135___action, LOCATE_parser, 7086); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode12*/, 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___ReduceAction135___action, LOCATE_parser, 7088); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode14*/, 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___ReduceAction135___action, LOCATE_parser, 7090); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 7105, LOCATE_parser___ReduceAction135___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction135].i]) return;
-  return_label303: while(false);
-  init_table[VAL2OBJ( self)->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, 7109, LOCATE_parser___ReduceAction136___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction136___action, LOCATE_parser, 7124); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction136___action, LOCATE_parser, 7126); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction136___action, LOCATE_parser, 7132); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction136___action, LOCATE_parser, 7134); nit_exit(1);}
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction136___action, LOCATE_parser, 7140); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction136___action, LOCATE_parser, 7142); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction136___action, LOCATE_parser, 7144); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode12*/, 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___ReduceAction136___action, LOCATE_parser, 7146); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode14*/, 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___ReduceAction136___action, LOCATE_parser, 7148); nit_exit(1);}
-  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*/,  variable[24] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 7163, LOCATE_parser___ReduceAction136___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction136].i]) return;
-  return_label305: while(false);
-  init_table[VAL2OBJ( self)->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, 7167, LOCATE_parser___ReduceAction137___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction137___action, LOCATE_parser, 7180); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction137___action, LOCATE_parser, 7182); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction137___action, LOCATE_parser, 7188); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction137___action, LOCATE_parser, 7190); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction137___action, LOCATE_parser, 7192); nit_exit(1);}
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode10*/, 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___ReduceAction137___action, LOCATE_parser, 7194); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction137___action, LOCATE_parser, 7196); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 7211, LOCATE_parser___ReduceAction137___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction137].i]) return;
-  return_label307: while(false);
-  init_table[VAL2OBJ( self)->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, 7215, LOCATE_parser___ReduceAction138___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction138___action, LOCATE_parser, 7230); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction138___action, LOCATE_parser, 7232); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction138___action, LOCATE_parser, 7234); nit_exit(1);}
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction138___action, LOCATE_parser, 7240); nit_exit(1);}
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[19] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction138___action, LOCATE_parser, 7246); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction138___action, LOCATE_parser, 7248); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction138___action, LOCATE_parser, 7250); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode12*/, 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___ReduceAction138___action, LOCATE_parser, 7252); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode14*/, 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___ReduceAction138___action, LOCATE_parser, 7254); nit_exit(1);}
-  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*/,  variable[24] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 7269, LOCATE_parser___ReduceAction138___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction138].i]) return;
-  return_label309: while(false);
-  init_table[VAL2OBJ( self)->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, 7273, LOCATE_parser___ReduceAction139___action};
-  val_t variable[30];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  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___ReduceAction139___action, LOCATE_parser, 7289); nit_exit(1);}
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  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___ReduceAction139___action, LOCATE_parser, 7291); nit_exit(1);}
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  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___ReduceAction139___action, LOCATE_parser, 7293); nit_exit(1);}
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  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___ReduceAction139___action, LOCATE_parser, 7299); nit_exit(1);}
-  variable[21] =  variable[11] /*nodearraylist5*/;
-  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___ReduceAction139___action, LOCATE_parser, 7301); nit_exit(1);}
-  variable[23] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[20] /*tkwredefnode7*/,  variable[21] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[22] = variable[23];
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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___ReduceAction139___action, LOCATE_parser, 7307); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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___ReduceAction139___action, LOCATE_parser, 7309); nit_exit(1);}
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  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___ReduceAction139___action, LOCATE_parser, 7311); nit_exit(1);}
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  variable[27] = TAG_Bool(( variable[26] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[26] /*tattridnode12*/, 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___ReduceAction139___action, LOCATE_parser, 7313); nit_exit(1);}
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode14*/, 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___ReduceAction139___action, LOCATE_parser, 7315); nit_exit(1);}
-  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*/,  variable[26] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  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, 7330, LOCATE_parser___ReduceAction139___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction139].i]) return;
-  return_label311: while(false);
-  init_table[VAL2OBJ( self)->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, 7334, LOCATE_parser___ReduceAction140___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction140___action, LOCATE_parser, 7348); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction140___action, LOCATE_parser, 7350); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction140___action, LOCATE_parser, 7352); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction140___action, LOCATE_parser, 7358); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction140___action, LOCATE_parser, 7360); nit_exit(1);}
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction140___action, LOCATE_parser, 7362); nit_exit(1);}
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode10*/, 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___ReduceAction140___action, LOCATE_parser, 7364); nit_exit(1);}
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction140___action, LOCATE_parser, 7366); nit_exit(1);}
-  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*/,  variable[21] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 7381, LOCATE_parser___ReduceAction140___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction140].i]) return;
-  return_label313: while(false);
-  init_table[VAL2OBJ( self)->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, 7385, LOCATE_parser___ReduceAction141___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction141___action, LOCATE_parser, 7398); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction141___action, LOCATE_parser, 7400); nit_exit(1);}
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction141___action, LOCATE_parser, 7406); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction141___action, LOCATE_parser, 7408); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction141___action, LOCATE_parser, 7410); nit_exit(1);}
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode10*/, 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___ReduceAction141___action, LOCATE_parser, 7412); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction141___action, LOCATE_parser, 7414); nit_exit(1);}
-  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*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 7429, LOCATE_parser___ReduceAction141___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction141].i]) return;
-  return_label315: while(false);
-  init_table[VAL2OBJ( self)->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, 7433, LOCATE_parser___ReduceAction142___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction142___action, LOCATE_parser, 7447); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction142___action, LOCATE_parser, 7449); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction142___action, LOCATE_parser, 7451); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode5*/,  variable[16] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction142___action, LOCATE_parser, 7457); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction142___action, LOCATE_parser, 7459); nit_exit(1);}
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction142___action, LOCATE_parser, 7461); nit_exit(1);}
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode10*/, 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___ReduceAction142___action, LOCATE_parser, 7463); nit_exit(1);}
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction142___action, LOCATE_parser, 7465); nit_exit(1);}
-  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*/,  variable[21] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 7480, LOCATE_parser___ReduceAction142___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction142].i]) return;
-  return_label317: while(false);
-  init_table[VAL2OBJ( self)->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, 7484, LOCATE_parser___ReduceAction143___action};
-  val_t variable[20];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction143___action, LOCATE_parser, 7496); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction143___action, LOCATE_parser, 7498); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction143___action, LOCATE_parser, 7500); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction143___action, LOCATE_parser, 7502); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode8*/, 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___ReduceAction143___action, LOCATE_parser, 7504); nit_exit(1);}
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode10*/, 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___ReduceAction143___action, LOCATE_parser, 7506); nit_exit(1);}
-  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*/,  variable[16] /*tattridnode8*/,  NIT_NULL /*null*/,  variable[17] /*pexprnode10*/); /*new AAttrPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  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, 7521, LOCATE_parser___ReduceAction143___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction143].i]) return;
-  return_label319: while(false);
-  init_table[VAL2OBJ( self)->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, 7525, LOCATE_parser___ReduceAction144___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction144___action, LOCATE_parser, 7539); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction144___action, LOCATE_parser, 7541); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction144___action, LOCATE_parser, 7547); nit_exit(1);}
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction144___action, LOCATE_parser, 7553); nit_exit(1);}
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction144___action, LOCATE_parser, 7555); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode12*/, 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___ReduceAction144___action, LOCATE_parser, 7557); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode13*/, 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___ReduceAction144___action, LOCATE_parser, 7559); nit_exit(1);}
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode14*/, 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___ReduceAction144___action, LOCATE_parser, 7561); nit_exit(1);}
-  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*/,  variable[21] /*tattridnode12*/,  variable[22] /*ptypenode13*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 7576, LOCATE_parser___ReduceAction144___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction144].i]) return;
-  return_label321: while(false);
-  init_table[VAL2OBJ( self)->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, 7580, LOCATE_parser___ReduceAction145___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction145___action, LOCATE_parser, 7595); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction145___action, LOCATE_parser, 7597); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction145___action, LOCATE_parser, 7603); nit_exit(1);}
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction145___action, LOCATE_parser, 7605); nit_exit(1);}
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction145___action, LOCATE_parser, 7611); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction145___action, LOCATE_parser, 7613); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode12*/, 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___ReduceAction145___action, LOCATE_parser, 7615); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode13*/, 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___ReduceAction145___action, LOCATE_parser, 7617); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode14*/, 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___ReduceAction145___action, LOCATE_parser, 7619); nit_exit(1);}
-  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*/,  variable[23] /*tattridnode12*/,  variable[24] /*ptypenode13*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 7634, LOCATE_parser___ReduceAction145___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction145].i]) return;
-  return_label323: while(false);
-  init_table[VAL2OBJ( self)->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, 7638, LOCATE_parser___ReduceAction146___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction146___action, LOCATE_parser, 7651); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction146___action, LOCATE_parser, 7653); nit_exit(1);}
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction146___action, LOCATE_parser, 7659); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction146___action, LOCATE_parser, 7661); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode10*/, 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___ReduceAction146___action, LOCATE_parser, 7663); nit_exit(1);}
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode11*/, 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___ReduceAction146___action, LOCATE_parser, 7665); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction146___action, LOCATE_parser, 7667); nit_exit(1);}
-  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*/,  variable[18] /*tattridnode10*/,  variable[19] /*ptypenode11*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 7682, LOCATE_parser___ReduceAction146___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction146].i]) return;
-  return_label325: while(false);
-  init_table[VAL2OBJ( self)->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, 7686, LOCATE_parser___ReduceAction147___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction147___action, LOCATE_parser, 7701); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction147___action, LOCATE_parser, 7703); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction147___action, LOCATE_parser, 7705); nit_exit(1);}
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction147___action, LOCATE_parser, 7711); nit_exit(1);}
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[19] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction147___action, LOCATE_parser, 7717); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction147___action, LOCATE_parser, 7719); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode12*/, 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___ReduceAction147___action, LOCATE_parser, 7721); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode13*/, 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___ReduceAction147___action, LOCATE_parser, 7723); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode14*/, 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___ReduceAction147___action, LOCATE_parser, 7725); nit_exit(1);}
-  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*/,  variable[23] /*tattridnode12*/,  variable[24] /*ptypenode13*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 7740, LOCATE_parser___ReduceAction147___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction147].i]) return;
-  return_label327: while(false);
-  init_table[VAL2OBJ( self)->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, 7744, LOCATE_parser___ReduceAction148___action};
-  val_t variable[30];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  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___ReduceAction148___action, LOCATE_parser, 7760); nit_exit(1);}
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  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___ReduceAction148___action, LOCATE_parser, 7762); nit_exit(1);}
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  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___ReduceAction148___action, LOCATE_parser, 7764); nit_exit(1);}
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  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___ReduceAction148___action, LOCATE_parser, 7770); nit_exit(1);}
-  variable[21] =  variable[11] /*nodearraylist5*/;
-  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___ReduceAction148___action, LOCATE_parser, 7772); nit_exit(1);}
-  variable[23] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[20] /*tkwredefnode7*/,  variable[21] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[22] = variable[23];
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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___ReduceAction148___action, LOCATE_parser, 7778); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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___ReduceAction148___action, LOCATE_parser, 7780); nit_exit(1);}
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode12*/, 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___ReduceAction148___action, LOCATE_parser, 7782); nit_exit(1);}
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode13*/, 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___ReduceAction148___action, LOCATE_parser, 7784); nit_exit(1);}
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode14*/, 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___ReduceAction148___action, LOCATE_parser, 7786); nit_exit(1);}
-  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*/,  variable[25] /*tattridnode12*/,  variable[26] /*ptypenode13*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  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, 7801, LOCATE_parser___ReduceAction148___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction148].i]) return;
-  return_label329: while(false);
-  init_table[VAL2OBJ( self)->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, 7805, LOCATE_parser___ReduceAction149___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction149___action, LOCATE_parser, 7819); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction149___action, LOCATE_parser, 7821); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction149___action, LOCATE_parser, 7823); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction149___action, LOCATE_parser, 7829); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction149___action, LOCATE_parser, 7831); nit_exit(1);}
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode10*/, 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___ReduceAction149___action, LOCATE_parser, 7833); nit_exit(1);}
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode11*/, 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___ReduceAction149___action, LOCATE_parser, 7835); nit_exit(1);}
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction149___action, LOCATE_parser, 7837); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 7852, LOCATE_parser___ReduceAction149___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction149].i]) return;
-  return_label331: while(false);
-  init_table[VAL2OBJ( self)->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, 7856, LOCATE_parser___ReduceAction150___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction150___action, LOCATE_parser, 7869); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction150___action, LOCATE_parser, 7871); nit_exit(1);}
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[15] = variable[16];
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction150___action, LOCATE_parser, 7877); nit_exit(1);}
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction150___action, LOCATE_parser, 7879); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode10*/, 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___ReduceAction150___action, LOCATE_parser, 7881); nit_exit(1);}
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode11*/, 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___ReduceAction150___action, LOCATE_parser, 7883); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction150___action, LOCATE_parser, 7885); nit_exit(1);}
-  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*/,  variable[18] /*tattridnode10*/,  variable[19] /*ptypenode11*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 7900, LOCATE_parser___ReduceAction150___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction150].i]) return;
-  return_label333: while(false);
-  init_table[VAL2OBJ( self)->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, 7904, LOCATE_parser___ReduceAction151___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction151___action, LOCATE_parser, 7918); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction151___action, LOCATE_parser, 7920); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction151___action, LOCATE_parser, 7922); nit_exit(1);}
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode5*/,  variable[16] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction151___action, LOCATE_parser, 7928); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction151___action, LOCATE_parser, 7930); nit_exit(1);}
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode10*/, 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___ReduceAction151___action, LOCATE_parser, 7932); nit_exit(1);}
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode11*/, 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___ReduceAction151___action, LOCATE_parser, 7934); nit_exit(1);}
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction151___action, LOCATE_parser, 7936); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 7951, LOCATE_parser___ReduceAction151___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction151].i]) return;
-  return_label335: while(false);
-  init_table[VAL2OBJ( self)->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, 7955, LOCATE_parser___ReduceAction152___action};
-  val_t variable[20];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction152___action, LOCATE_parser, 7967); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction152___action, LOCATE_parser, 7969); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction152___action, LOCATE_parser, 7971); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode8*/, 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___ReduceAction152___action, LOCATE_parser, 7973); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode9*/, 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___ReduceAction152___action, LOCATE_parser, 7975); nit_exit(1);}
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode10*/, 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___ReduceAction152___action, LOCATE_parser, 7977); nit_exit(1);}
-  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*/,  variable[15] /*tattridnode8*/,  variable[16] /*ptypenode9*/,  variable[17] /*pexprnode10*/); /*new AAttrPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  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, 7992, LOCATE_parser___ReduceAction152___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction152].i]) return;
-  return_label337: while(false);
-  init_table[VAL2OBJ( self)->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, 7996, LOCATE_parser___ReduceAction153___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction153___action, LOCATE_parser, 8011); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction153___action, LOCATE_parser, 8013); nit_exit(1);}
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[17] = variable[18];
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction153___action, LOCATE_parser, 8019); nit_exit(1);}
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[18] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction153___action, LOCATE_parser, 8025); nit_exit(1);}
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction153___action, LOCATE_parser, 8027); nit_exit(1);}
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction153___action, LOCATE_parser, 8029); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode12*/, 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___ReduceAction153___action, LOCATE_parser, 8031); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode13*/, 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___ReduceAction153___action, LOCATE_parser, 8033); nit_exit(1);}
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode14*/, 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___ReduceAction153___action, LOCATE_parser, 8035); nit_exit(1);}
-  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*/,  variable[23] /*tattridnode12*/,  variable[24] /*ptypenode13*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 8050, LOCATE_parser___ReduceAction153___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction153].i]) return;
-  return_label339: while(false);
-  init_table[VAL2OBJ( self)->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, 8054, LOCATE_parser___ReduceAction154___action};
-  val_t variable[30];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  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___ReduceAction154___action, LOCATE_parser, 8070); nit_exit(1);}
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  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___ReduceAction154___action, LOCATE_parser, 8072); nit_exit(1);}
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[17] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[13] /*nodearraylist3*/;
-  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___ReduceAction154___action, LOCATE_parser, 8078); nit_exit(1);}
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  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___ReduceAction154___action, LOCATE_parser, 8080); nit_exit(1);}
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[19] /*tkwredefnode7*/,  variable[20] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[21] = variable[22];
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  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___ReduceAction154___action, LOCATE_parser, 8086); nit_exit(1);}
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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___ReduceAction154___action, LOCATE_parser, 8088); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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___ReduceAction154___action, LOCATE_parser, 8090); nit_exit(1);}
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode12*/, 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___ReduceAction154___action, LOCATE_parser, 8092); nit_exit(1);}
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode13*/, 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___ReduceAction154___action, LOCATE_parser, 8094); nit_exit(1);}
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode14*/, 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___ReduceAction154___action, LOCATE_parser, 8096); nit_exit(1);}
-  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*/,  variable[25] /*tattridnode12*/,  variable[26] /*ptypenode13*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  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, 8111, LOCATE_parser___ReduceAction154___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction154].i]) return;
-  return_label341: while(false);
-  init_table[VAL2OBJ( self)->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, 8115, LOCATE_parser___ReduceAction155___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction155___action, LOCATE_parser, 8129); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction155___action, LOCATE_parser, 8131); nit_exit(1);}
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction155___action, LOCATE_parser, 8137); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction155___action, LOCATE_parser, 8139); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction155___action, LOCATE_parser, 8141); nit_exit(1);}
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode10*/, 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___ReduceAction155___action, LOCATE_parser, 8143); nit_exit(1);}
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode11*/, 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___ReduceAction155___action, LOCATE_parser, 8145); nit_exit(1);}
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction155___action, LOCATE_parser, 8147); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 8162, LOCATE_parser___ReduceAction155___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction155].i]) return;
-  return_label343: while(false);
-  init_table[VAL2OBJ( self)->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, 8166, LOCATE_parser___ReduceAction156___action};
-  val_t variable[30];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  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___ReduceAction156___action, LOCATE_parser, 8182); nit_exit(1);}
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  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___ReduceAction156___action, LOCATE_parser, 8184); nit_exit(1);}
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  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___ReduceAction156___action, LOCATE_parser, 8186); nit_exit(1);}
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[19] = variable[20];
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  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___ReduceAction156___action, LOCATE_parser, 8192); nit_exit(1);}
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[20] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[21] = variable[22];
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  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___ReduceAction156___action, LOCATE_parser, 8198); nit_exit(1);}
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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___ReduceAction156___action, LOCATE_parser, 8200); nit_exit(1);}
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  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___ReduceAction156___action, LOCATE_parser, 8202); nit_exit(1);}
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode12*/, 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___ReduceAction156___action, LOCATE_parser, 8204); nit_exit(1);}
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode13*/, 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___ReduceAction156___action, LOCATE_parser, 8206); nit_exit(1);}
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode14*/, 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___ReduceAction156___action, LOCATE_parser, 8208); nit_exit(1);}
-  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*/,  variable[25] /*tattridnode12*/,  variable[26] /*ptypenode13*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  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, 8223, LOCATE_parser___ReduceAction156___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction156].i]) return;
-  return_label345: while(false);
-  init_table[VAL2OBJ( self)->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, 8227, LOCATE_parser___ReduceAction157___action};
-  val_t variable[32];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[17] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[16] = variable[17];
-  variable[17] =  variable[16] /*nodearraylist1*/;
-  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___ReduceAction157___action, LOCATE_parser, 8244); nit_exit(1);}
-  variable[18] =  variable[15] /*nodearraylist2*/;
-  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___ReduceAction157___action, LOCATE_parser, 8246); nit_exit(1);}
-  variable[19] =  variable[14] /*nodearraylist3*/;
-  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___ReduceAction157___action, LOCATE_parser, 8248); nit_exit(1);}
-  variable[21] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[18] /*tkwredefnode4*/,  variable[19] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[20] = variable[21];
-  variable[21] =  variable[13] /*nodearraylist4*/;
-  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___ReduceAction157___action, LOCATE_parser, 8254); nit_exit(1);}
-  variable[22] =  variable[12] /*nodearraylist5*/;
-  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___ReduceAction157___action, LOCATE_parser, 8256); nit_exit(1);}
-  variable[24] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[21] /*tkwredefnode7*/,  variable[22] /*tkwwritablenode8*/); /*new AWriteAble*/
-  variable[23] = variable[24];
-  variable[24] =  variable[11] /*nodearraylist6*/;
-  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___ReduceAction157___action, LOCATE_parser, 8262); nit_exit(1);}
-  variable[25] =  variable[10] /*nodearraylist7*/;
-  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___ReduceAction157___action, LOCATE_parser, 8264); nit_exit(1);}
-  variable[26] =  variable[9] /*nodearraylist8*/;
-  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___ReduceAction157___action, LOCATE_parser, 8266); nit_exit(1);}
-  variable[27] =  variable[8] /*nodearraylist9*/;
-  variable[28] = TAG_Bool(( variable[27] /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable[27] /*tattridnode12*/, 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___ReduceAction157___action, LOCATE_parser, 8268); nit_exit(1);}
-  variable[28] =  variable[7] /*nodearraylist10*/;
-  variable[29] = TAG_Bool(( variable[28] /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable[28] /*ptypenode13*/, 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___ReduceAction157___action, LOCATE_parser, 8270); nit_exit(1);}
-  variable[29] =  variable[4] /*nodearraylist13*/;
-  variable[30] = TAG_Bool(( variable[29] /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable[29] /*pexprnode14*/, 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___ReduceAction157___action, LOCATE_parser, 8272); nit_exit(1);}
-  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*/,  variable[27] /*tattridnode12*/,  variable[28] /*ptypenode13*/,  variable[29] /*pexprnode14*/); /*new AAttrPropdef*/
-  variable[30] = variable[31];
-  variable[3] =  variable[30] /*ppropdefnode1*/ /*node_list=*/;
-  variable[31] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[31],  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, 8287, LOCATE_parser___ReduceAction157___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction157].i]) return;
-  return_label347: while(false);
-  init_table[VAL2OBJ( self)->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, 8291, LOCATE_parser___ReduceAction158___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction158___action, LOCATE_parser, 8306); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction158___action, LOCATE_parser, 8308); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction158___action, LOCATE_parser, 8310); nit_exit(1);}
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/); /*new AReadAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction158___action, LOCATE_parser, 8316); nit_exit(1);}
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction158___action, LOCATE_parser, 8318); nit_exit(1);}
-  variable[21] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction158___action, LOCATE_parser, 8320); nit_exit(1);}
-  variable[22] =  variable[8] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode10*/, 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___ReduceAction158___action, LOCATE_parser, 8322); nit_exit(1);}
-  variable[23] =  variable[7] /*nodearraylist8*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode11*/, 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___ReduceAction158___action, LOCATE_parser, 8324); nit_exit(1);}
-  variable[24] =  variable[4] /*nodearraylist11*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction158___action, LOCATE_parser, 8326); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode10*/,  variable[23] /*ptypenode11*/,  variable[24] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 8341, LOCATE_parser___ReduceAction158___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction158].i]) return;
-  return_label349: while(false);
-  init_table[VAL2OBJ( self)->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, 8345, LOCATE_parser___ReduceAction159___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction159___action, LOCATE_parser, 8359); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction159___action, LOCATE_parser, 8361); nit_exit(1);}
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[16] = variable[17];
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction159___action, LOCATE_parser, 8367); nit_exit(1);}
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction159___action, LOCATE_parser, 8369); nit_exit(1);}
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  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___ReduceAction159___action, LOCATE_parser, 8371); nit_exit(1);}
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode10*/, 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___ReduceAction159___action, LOCATE_parser, 8373); nit_exit(1);}
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode11*/, 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___ReduceAction159___action, LOCATE_parser, 8375); nit_exit(1);}
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction159___action, LOCATE_parser, 8377); nit_exit(1);}
-  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*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 8392, LOCATE_parser___ReduceAction159___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction159].i]) return;
-  return_label351: while(false);
-  init_table[VAL2OBJ( self)->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, 8396, LOCATE_parser___ReduceAction160___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction160___action, LOCATE_parser, 8411); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction160___action, LOCATE_parser, 8413); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction160___action, LOCATE_parser, 8415); nit_exit(1);}
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode5*/,  variable[17] /*tkwwritablenode6*/); /*new AWriteAble*/
-  variable[18] = variable[19];
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  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___ReduceAction160___action, LOCATE_parser, 8421); nit_exit(1);}
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction160___action, LOCATE_parser, 8423); nit_exit(1);}
-  variable[21] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction160___action, LOCATE_parser, 8425); nit_exit(1);}
-  variable[22] =  variable[8] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode10*/, 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___ReduceAction160___action, LOCATE_parser, 8427); nit_exit(1);}
-  variable[23] =  variable[7] /*nodearraylist8*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode11*/, 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___ReduceAction160___action, LOCATE_parser, 8429); nit_exit(1);}
-  variable[24] =  variable[4] /*nodearraylist11*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction160___action, LOCATE_parser, 8431); nit_exit(1);}
-  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*/,  variable[22] /*tattridnode10*/,  variable[23] /*ptypenode11*/,  variable[24] /*pexprnode12*/); /*new AAttrPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 8446, LOCATE_parser___ReduceAction160___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction160].i]) return;
-  return_label353: while(false);
-  init_table[VAL2OBJ( self)->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, 8450, LOCATE_parser___ReduceAction161___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction161___action, LOCATE_parser, 8463); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction161___action, LOCATE_parser, 8465); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction161___action, LOCATE_parser, 8467); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction161___action, LOCATE_parser, 8469); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode8*/, 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___ReduceAction161___action, LOCATE_parser, 8471); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction161___action, LOCATE_parser, 8473); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode10*/, 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___ReduceAction161___action, LOCATE_parser, 8475); nit_exit(1);}
-  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*/,  variable[17] /*tattridnode8*/,  variable[18] /*ptypenode9*/,  variable[19] /*pexprnode10*/); /*new AAttrPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 8490, LOCATE_parser___ReduceAction161___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction161].i]) return;
-  return_label355: while(false);
-  init_table[VAL2OBJ( self)->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, 8494, LOCATE_parser___ReduceAction162___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction162___action, LOCATE_parser, 8504); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction162___action, LOCATE_parser, 8506); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  variable[13] = TAG_Bool(( variable[12] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8508); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  variable[14] = TAG_Bool(( variable[13] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8510); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  NIT_NULL /*null*/,  variable[15] /*listnode10*/); /*new ASignature*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwmethnode5*/,  variable[13] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 8529, LOCATE_parser___ReduceAction162___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction162].i]) return;
-  return_label357: while(false);
-  init_table[VAL2OBJ( self)->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, 8533, LOCATE_parser___ReduceAction163___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction163___action, LOCATE_parser, 8544); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction163___action, LOCATE_parser, 8546); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction163___action, LOCATE_parser, 8548); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction163___action, LOCATE_parser, 8550); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction163___action, LOCATE_parser, 8554); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 8578, LOCATE_parser___ReduceAction163___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction163].i]) return;
-  return_label359: while(false);
-  init_table[VAL2OBJ( self)->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, 8582, LOCATE_parser___ReduceAction164___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction164___action, LOCATE_parser, 8593); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction164___action, LOCATE_parser, 8595); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction164___action, LOCATE_parser, 8597); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction164___action, LOCATE_parser, 8599); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[17] /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8603); nit_exit(1);}
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  variable[17] /*ptypenode9*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 8620, LOCATE_parser___ReduceAction164___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction164].i]) return;
-  return_label361: while(false);
-  init_table[VAL2OBJ( self)->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, 8624, LOCATE_parser___ReduceAction165___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction165___action, LOCATE_parser, 8636); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction165___action, LOCATE_parser, 8638); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction165___action, LOCATE_parser, 8640); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction165___action, LOCATE_parser, 8642); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction165___action, LOCATE_parser, 8646); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode10*/, 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___ReduceAction165___action, LOCATE_parser, 8655); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  variable[19] /*ptypenode10*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 8672, LOCATE_parser___ReduceAction165___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction165].i]) return;
-  return_label363: while(false);
-  init_table[VAL2OBJ( self)->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, 8676, LOCATE_parser___ReduceAction166___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction166___action, LOCATE_parser, 8687); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction166___action, LOCATE_parser, 8689); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction166___action, LOCATE_parser, 8691); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction166___action, LOCATE_parser, 8693); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode10*/, 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___ReduceAction166___action, LOCATE_parser, 8697); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[16] =  variable[17] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[17] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 8721, LOCATE_parser___ReduceAction166___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction166].i]) return;
-  return_label365: while(false);
-  init_table[VAL2OBJ( self)->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, 8725, LOCATE_parser___ReduceAction167___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction167___action, LOCATE_parser, 8737); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction167___action, LOCATE_parser, 8739); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction167___action, LOCATE_parser, 8741); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction167___action, LOCATE_parser, 8743); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction167___action, LOCATE_parser, 8747); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode11*/, 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___ReduceAction167___action, LOCATE_parser, 8756); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[19] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode12*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 8780, LOCATE_parser___ReduceAction167___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction167].i]) return;
-  return_label367: while(false);
-  init_table[VAL2OBJ( self)->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, 8784, LOCATE_parser___ReduceAction168___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction168___action, LOCATE_parser, 8796); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction168___action, LOCATE_parser, 8798); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction168___action, LOCATE_parser, 8800); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction168___action, LOCATE_parser, 8802); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction168___action, LOCATE_parser, 8806); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction168___action, LOCATE_parser, 8808); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 8832, LOCATE_parser___ReduceAction168___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction168].i]) return;
-  return_label369: while(false);
-  init_table[VAL2OBJ( self)->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, 8836, LOCATE_parser___ReduceAction169___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction169___action, LOCATE_parser, 8849); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction169___action, LOCATE_parser, 8851); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction169___action, LOCATE_parser, 8853); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction169___action, LOCATE_parser, 8855); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction169___action, LOCATE_parser, 8859); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction169___action, LOCATE_parser, 8868); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction169___action, LOCATE_parser, 8870); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[18] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 8894, LOCATE_parser___ReduceAction169___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction169].i]) return;
-  return_label371: while(false);
-  init_table[VAL2OBJ( self)->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, 8898, LOCATE_parser___ReduceAction170___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction170___action, LOCATE_parser, 8909); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction170___action, LOCATE_parser, 8911); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction170___action, LOCATE_parser, 8913); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction170___action, LOCATE_parser, 8915); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction170___action, LOCATE_parser, 8917); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 8936, LOCATE_parser___ReduceAction170___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction170].i]) return;
-  return_label373: while(false);
-  init_table[VAL2OBJ( self)->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, 8940, LOCATE_parser___ReduceAction171___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction171___action, LOCATE_parser, 8952); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction171___action, LOCATE_parser, 8954); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction171___action, LOCATE_parser, 8956); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction171___action, LOCATE_parser, 8958); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction171___action, LOCATE_parser, 8960); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction171___action, LOCATE_parser, 8964); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 8988, LOCATE_parser___ReduceAction171___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction171].i]) return;
-  return_label375: while(false);
-  init_table[VAL2OBJ( self)->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, 8992, LOCATE_parser___ReduceAction172___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction172___action, LOCATE_parser, 9004); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction172___action, LOCATE_parser, 9006); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction172___action, LOCATE_parser, 9008); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction172___action, LOCATE_parser, 9010); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction172___action, LOCATE_parser, 9012); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction172___action, LOCATE_parser, 9016); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9033, LOCATE_parser___ReduceAction172___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction172].i]) return;
-  return_label377: while(false);
-  init_table[VAL2OBJ( self)->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, 9037, LOCATE_parser___ReduceAction173___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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, 9050); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction173___action, LOCATE_parser, 9052); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction173___action, LOCATE_parser, 9054); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction173___action, LOCATE_parser, 9056); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction173___action, LOCATE_parser, 9058); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction173___action, LOCATE_parser, 9062); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction173___action, LOCATE_parser, 9071); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 9088, LOCATE_parser___ReduceAction173___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction173].i]) return;
-  return_label379: while(false);
-  init_table[VAL2OBJ( self)->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, 9092, LOCATE_parser___ReduceAction174___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction174___action, LOCATE_parser, 9104); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction174___action, LOCATE_parser, 9106); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction174___action, LOCATE_parser, 9108); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction174___action, LOCATE_parser, 9110); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction174___action, LOCATE_parser, 9112); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction174___action, LOCATE_parser, 9116); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9140, LOCATE_parser___ReduceAction174___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction174].i]) return;
-  return_label381: while(false);
-  init_table[VAL2OBJ( self)->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, 9144, LOCATE_parser___ReduceAction175___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction175___action, LOCATE_parser, 9157); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction175___action, LOCATE_parser, 9159); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction175___action, LOCATE_parser, 9161); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction175___action, LOCATE_parser, 9163); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction175___action, LOCATE_parser, 9165); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction175___action, LOCATE_parser, 9169); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction175___action, LOCATE_parser, 9178); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 9202, LOCATE_parser___ReduceAction175___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction175].i]) return;
-  return_label383: while(false);
-  init_table[VAL2OBJ( self)->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, 9206, LOCATE_parser___ReduceAction176___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction176___action, LOCATE_parser, 9219); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction176___action, LOCATE_parser, 9221); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction176___action, LOCATE_parser, 9223); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction176___action, LOCATE_parser, 9225); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction176___action, LOCATE_parser, 9227); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction176___action, LOCATE_parser, 9231); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction176___action, LOCATE_parser, 9233); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 9257, LOCATE_parser___ReduceAction176___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction176].i]) return;
-  return_label385: while(false);
-  init_table[VAL2OBJ( self)->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, 9261, LOCATE_parser___ReduceAction177___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction177___action, LOCATE_parser, 9275); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction177___action, LOCATE_parser, 9277); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction177___action, LOCATE_parser, 9279); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9281); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9283); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction177___action, LOCATE_parser, 9287); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction177___action, LOCATE_parser, 9296); nit_exit(1);}
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction177___action, LOCATE_parser, 9298); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[26] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 9322, LOCATE_parser___ReduceAction177___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction177].i]) return;
-  return_label387: while(false);
-  init_table[VAL2OBJ( self)->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, 9326, LOCATE_parser___ReduceAction178___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction178___action, LOCATE_parser, 9336); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction178___action, LOCATE_parser, 9338); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  variable[13] = TAG_Bool(( variable[12] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9340); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  variable[14] = TAG_Bool(( variable[13] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9342); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  NIT_NULL /*null*/,  variable[15] /*listnode10*/); /*new ASignature*/
-  variable[16] = variable[17];
-  variable[18] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwmethnode5*/,  variable[13] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 9361, LOCATE_parser___ReduceAction178___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction178].i]) return;
-  return_label389: while(false);
-  init_table[VAL2OBJ( self)->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, 9365, LOCATE_parser___ReduceAction179___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction179___action, LOCATE_parser, 9376); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction179___action, LOCATE_parser, 9378); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction179___action, LOCATE_parser, 9380); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction179___action, LOCATE_parser, 9382); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction179___action, LOCATE_parser, 9386); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 9410, LOCATE_parser___ReduceAction179___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction179].i]) return;
-  return_label391: while(false);
-  init_table[VAL2OBJ( self)->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, 9414, LOCATE_parser___ReduceAction180___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction180___action, LOCATE_parser, 9425); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction180___action, LOCATE_parser, 9427); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction180___action, LOCATE_parser, 9429); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction180___action, LOCATE_parser, 9431); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[17] /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9435); nit_exit(1);}
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  variable[17] /*ptypenode9*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 9452, LOCATE_parser___ReduceAction180___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction180].i]) return;
-  return_label393: while(false);
-  init_table[VAL2OBJ( self)->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, 9456, LOCATE_parser___ReduceAction181___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction181___action, LOCATE_parser, 9468); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction181___action, LOCATE_parser, 9470); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction181___action, LOCATE_parser, 9472); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction181___action, LOCATE_parser, 9474); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction181___action, LOCATE_parser, 9478); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode10*/, 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___ReduceAction181___action, LOCATE_parser, 9487); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  variable[19] /*ptypenode10*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9504, LOCATE_parser___ReduceAction181___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction181].i]) return;
-  return_label395: while(false);
-  init_table[VAL2OBJ( self)->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, 9508, LOCATE_parser___ReduceAction182___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction182___action, LOCATE_parser, 9519); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction182___action, LOCATE_parser, 9521); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction182___action, LOCATE_parser, 9523); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction182___action, LOCATE_parser, 9525); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode10*/, 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___ReduceAction182___action, LOCATE_parser, 9529); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[16] =  variable[17] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[17] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 9553, LOCATE_parser___ReduceAction182___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction182].i]) return;
-  return_label397: while(false);
-  init_table[VAL2OBJ( self)->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, 9557, LOCATE_parser___ReduceAction183___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction183___action, LOCATE_parser, 9569); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction183___action, LOCATE_parser, 9571); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction183___action, LOCATE_parser, 9573); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction183___action, LOCATE_parser, 9575); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction183___action, LOCATE_parser, 9579); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode11*/, 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___ReduceAction183___action, LOCATE_parser, 9588); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[19] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode12*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9612, LOCATE_parser___ReduceAction183___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction183].i]) return;
-  return_label399: while(false);
-  init_table[VAL2OBJ( self)->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, 9616, LOCATE_parser___ReduceAction184___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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, 9628); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction184___action, LOCATE_parser, 9630); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction184___action, LOCATE_parser, 9632); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction184___action, LOCATE_parser, 9634); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction184___action, LOCATE_parser, 9638); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction184___action, LOCATE_parser, 9640); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9664, LOCATE_parser___ReduceAction184___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction184].i]) return;
-  return_label401: while(false);
-  init_table[VAL2OBJ( self)->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, 9668, LOCATE_parser___ReduceAction185___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction185___action, LOCATE_parser, 9681); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction185___action, LOCATE_parser, 9683); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction185___action, LOCATE_parser, 9685); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction185___action, LOCATE_parser, 9687); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction185___action, LOCATE_parser, 9691); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction185___action, LOCATE_parser, 9700); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction185___action, LOCATE_parser, 9702); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[18] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 9726, LOCATE_parser___ReduceAction185___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction185].i]) return;
-  return_label403: while(false);
-  init_table[VAL2OBJ( self)->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, 9730, LOCATE_parser___ReduceAction186___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction186___action, LOCATE_parser, 9741); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction186___action, LOCATE_parser, 9743); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction186___action, LOCATE_parser, 9745); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction186___action, LOCATE_parser, 9747); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction186___action, LOCATE_parser, 9749); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 9768, LOCATE_parser___ReduceAction186___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction186].i]) return;
-  return_label405: while(false);
-  init_table[VAL2OBJ( self)->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, 9772, LOCATE_parser___ReduceAction187___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction187___action, LOCATE_parser, 9784); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction187___action, LOCATE_parser, 9786); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction187___action, LOCATE_parser, 9788); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction187___action, LOCATE_parser, 9790); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction187___action, LOCATE_parser, 9792); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction187___action, LOCATE_parser, 9796); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9820, LOCATE_parser___ReduceAction187___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction187].i]) return;
-  return_label407: while(false);
-  init_table[VAL2OBJ( self)->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, 9824, LOCATE_parser___ReduceAction188___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction188___action, LOCATE_parser, 9836); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction188___action, LOCATE_parser, 9838); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction188___action, LOCATE_parser, 9840); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction188___action, LOCATE_parser, 9842); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction188___action, LOCATE_parser, 9844); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction188___action, LOCATE_parser, 9848); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9865, LOCATE_parser___ReduceAction188___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction188].i]) return;
-  return_label409: while(false);
-  init_table[VAL2OBJ( self)->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, 9869, LOCATE_parser___ReduceAction189___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction189___action, LOCATE_parser, 9882); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction189___action, LOCATE_parser, 9884); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction189___action, LOCATE_parser, 9886); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction189___action, LOCATE_parser, 9888); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction189___action, LOCATE_parser, 9890); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction189___action, LOCATE_parser, 9894); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction189___action, LOCATE_parser, 9903); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 9920, LOCATE_parser___ReduceAction189___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction189].i]) return;
-  return_label411: while(false);
-  init_table[VAL2OBJ( self)->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, 9924, LOCATE_parser___ReduceAction190___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction190___action, LOCATE_parser, 9936); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction190___action, LOCATE_parser, 9938); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction190___action, LOCATE_parser, 9940); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction190___action, LOCATE_parser, 9942); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction190___action, LOCATE_parser, 9944); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction190___action, LOCATE_parser, 9948); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 9972, LOCATE_parser___ReduceAction190___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction190].i]) return;
-  return_label413: while(false);
-  init_table[VAL2OBJ( self)->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, 9976, LOCATE_parser___ReduceAction191___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction191___action, LOCATE_parser, 9989); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction191___action, LOCATE_parser, 9991); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction191___action, LOCATE_parser, 9993); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction191___action, LOCATE_parser, 9995); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction191___action, LOCATE_parser, 9997); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction191___action, LOCATE_parser, 10001); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction191___action, LOCATE_parser, 10010); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 10034, LOCATE_parser___ReduceAction191___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction191].i]) return;
-  return_label415: while(false);
-  init_table[VAL2OBJ( self)->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, 10038, LOCATE_parser___ReduceAction192___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction192___action, LOCATE_parser, 10051); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction192___action, LOCATE_parser, 10053); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction192___action, LOCATE_parser, 10055); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction192___action, LOCATE_parser, 10057); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction192___action, LOCATE_parser, 10059); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction192___action, LOCATE_parser, 10063); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction192___action, LOCATE_parser, 10065); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 10089, LOCATE_parser___ReduceAction192___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction192].i]) return;
-  return_label417: while(false);
-  init_table[VAL2OBJ( self)->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, 10093, LOCATE_parser___ReduceAction193___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction193___action, LOCATE_parser, 10107); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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, 10109); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction193___action, LOCATE_parser, 10111); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 10113); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 10115); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction193___action, LOCATE_parser, 10119); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction193___action, LOCATE_parser, 10128); nit_exit(1);}
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction193___action, LOCATE_parser, 10130); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[26] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 10154, LOCATE_parser___ReduceAction193___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction193].i]) return;
-  return_label419: while(false);
-  init_table[VAL2OBJ( self)->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, 10158, LOCATE_parser___ReduceAction194___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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, 10168); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction194___action, LOCATE_parser, 10170); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  variable[13] = TAG_Bool(( variable[12] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 10172); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  variable[14] = TAG_Bool(( variable[13] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 10174); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  NIT_NULL /*null*/,  variable[15] /*listnode10*/); /*new ASignature*/
-  variable[16] = variable[17];
-  variable[18] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwmethnode5*/,  variable[13] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 10194, LOCATE_parser___ReduceAction194___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction194].i]) return;
-  return_label421: while(false);
-  init_table[VAL2OBJ( self)->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, 10198, LOCATE_parser___ReduceAction195___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction195___action, LOCATE_parser, 10209); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction195___action, LOCATE_parser, 10211); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction195___action, LOCATE_parser, 10213); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction195___action, LOCATE_parser, 10215); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction195___action, LOCATE_parser, 10219); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 10244, LOCATE_parser___ReduceAction195___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction195].i]) return;
-  return_label423: while(false);
-  init_table[VAL2OBJ( self)->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, 10248, LOCATE_parser___ReduceAction196___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction196___action, LOCATE_parser, 10259); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction196___action, LOCATE_parser, 10261); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction196___action, LOCATE_parser, 10263); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction196___action, LOCATE_parser, 10265); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[17] /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10269); nit_exit(1);}
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  variable[17] /*ptypenode9*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 10287, LOCATE_parser___ReduceAction196___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction196].i]) return;
-  return_label425: while(false);
-  init_table[VAL2OBJ( self)->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, 10291, LOCATE_parser___ReduceAction197___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction197___action, LOCATE_parser, 10303); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction197___action, LOCATE_parser, 10305); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction197___action, LOCATE_parser, 10307); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction197___action, LOCATE_parser, 10309); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction197___action, LOCATE_parser, 10313); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode10*/, 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___ReduceAction197___action, LOCATE_parser, 10322); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  variable[19] /*ptypenode10*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 10340, LOCATE_parser___ReduceAction197___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction197].i]) return;
-  return_label427: while(false);
-  init_table[VAL2OBJ( self)->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, 10344, LOCATE_parser___ReduceAction198___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction198___action, LOCATE_parser, 10355); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction198___action, LOCATE_parser, 10357); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction198___action, LOCATE_parser, 10359); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction198___action, LOCATE_parser, 10361); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode10*/, 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___ReduceAction198___action, LOCATE_parser, 10365); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[16] =  variable[17] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[17] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 10390, LOCATE_parser___ReduceAction198___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction198].i]) return;
-  return_label429: while(false);
-  init_table[VAL2OBJ( self)->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, 10394, LOCATE_parser___ReduceAction199___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction199___action, LOCATE_parser, 10406); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction199___action, LOCATE_parser, 10408); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction199___action, LOCATE_parser, 10410); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction199___action, LOCATE_parser, 10412); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction199___action, LOCATE_parser, 10416); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode11*/, 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___ReduceAction199___action, LOCATE_parser, 10425); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[19] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode12*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 10450, LOCATE_parser___ReduceAction199___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction199].i]) return;
-  return_label431: while(false);
-  init_table[VAL2OBJ( self)->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, 10454, LOCATE_parser___ReduceAction200___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction200___action, LOCATE_parser, 10466); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction200___action, LOCATE_parser, 10468); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction200___action, LOCATE_parser, 10470); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction200___action, LOCATE_parser, 10472); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction200___action, LOCATE_parser, 10476); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction200___action, LOCATE_parser, 10478); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 10503, LOCATE_parser___ReduceAction200___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction200].i]) return;
-  return_label433: while(false);
-  init_table[VAL2OBJ( self)->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, 10507, LOCATE_parser___ReduceAction201___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction201___action, LOCATE_parser, 10520); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction201___action, LOCATE_parser, 10522); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction201___action, LOCATE_parser, 10524); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction201___action, LOCATE_parser, 10526); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction201___action, LOCATE_parser, 10530); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction201___action, LOCATE_parser, 10539); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction201___action, LOCATE_parser, 10541); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[18] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 10566, LOCATE_parser___ReduceAction201___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction201].i]) return;
-  return_label435: while(false);
-  init_table[VAL2OBJ( self)->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, 10570, LOCATE_parser___ReduceAction202___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction202___action, LOCATE_parser, 10581); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction202___action, LOCATE_parser, 10583); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction202___action, LOCATE_parser, 10585); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction202___action, LOCATE_parser, 10587); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction202___action, LOCATE_parser, 10589); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 10609, LOCATE_parser___ReduceAction202___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction202].i]) return;
-  return_label437: while(false);
-  init_table[VAL2OBJ( self)->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, 10613, LOCATE_parser___ReduceAction203___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction203___action, LOCATE_parser, 10625); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction203___action, LOCATE_parser, 10627); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction203___action, LOCATE_parser, 10629); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction203___action, LOCATE_parser, 10631); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction203___action, LOCATE_parser, 10633); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction203___action, LOCATE_parser, 10637); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 10662, LOCATE_parser___ReduceAction203___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction203].i]) return;
-  return_label439: while(false);
-  init_table[VAL2OBJ( self)->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, 10666, LOCATE_parser___ReduceAction204___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction204___action, LOCATE_parser, 10678); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction204___action, LOCATE_parser, 10680); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction204___action, LOCATE_parser, 10682); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction204___action, LOCATE_parser, 10684); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction204___action, LOCATE_parser, 10686); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction204___action, LOCATE_parser, 10690); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 10708, LOCATE_parser___ReduceAction204___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction204].i]) return;
-  return_label441: while(false);
-  init_table[VAL2OBJ( self)->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, 10712, LOCATE_parser___ReduceAction205___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction205___action, LOCATE_parser, 10725); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction205___action, LOCATE_parser, 10727); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction205___action, LOCATE_parser, 10729); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction205___action, LOCATE_parser, 10731); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction205___action, LOCATE_parser, 10733); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction205___action, LOCATE_parser, 10737); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction205___action, LOCATE_parser, 10746); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 10764, LOCATE_parser___ReduceAction205___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction205].i]) return;
-  return_label443: while(false);
-  init_table[VAL2OBJ( self)->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, 10768, LOCATE_parser___ReduceAction206___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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, 10780); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction206___action, LOCATE_parser, 10782); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction206___action, LOCATE_parser, 10784); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction206___action, LOCATE_parser, 10786); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction206___action, LOCATE_parser, 10788); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction206___action, LOCATE_parser, 10792); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 10817, LOCATE_parser___ReduceAction206___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction206].i]) return;
-  return_label445: while(false);
-  init_table[VAL2OBJ( self)->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, 10821, LOCATE_parser___ReduceAction207___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction207___action, LOCATE_parser, 10834); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction207___action, LOCATE_parser, 10836); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction207___action, LOCATE_parser, 10838); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction207___action, LOCATE_parser, 10840); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction207___action, LOCATE_parser, 10842); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction207___action, LOCATE_parser, 10846); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction207___action, LOCATE_parser, 10855); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 10880, LOCATE_parser___ReduceAction207___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction207].i]) return;
-  return_label447: while(false);
-  init_table[VAL2OBJ( self)->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, 10884, LOCATE_parser___ReduceAction208___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction208___action, LOCATE_parser, 10897); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction208___action, LOCATE_parser, 10899); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction208___action, LOCATE_parser, 10901); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction208___action, LOCATE_parser, 10903); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction208___action, LOCATE_parser, 10905); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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, 10909); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction208___action, LOCATE_parser, 10911); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 10936, LOCATE_parser___ReduceAction208___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction208].i]) return;
-  return_label449: while(false);
-  init_table[VAL2OBJ( self)->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, 10940, LOCATE_parser___ReduceAction209___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction209___action, LOCATE_parser, 10954); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction209___action, LOCATE_parser, 10956); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction209___action, LOCATE_parser, 10958); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10960); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10962); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction209___action, LOCATE_parser, 10966); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction209___action, LOCATE_parser, 10975); nit_exit(1);}
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction209___action, LOCATE_parser, 10977); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 11002, LOCATE_parser___ReduceAction209___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction209].i]) return;
-  return_label451: while(false);
-  init_table[VAL2OBJ( self)->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, 11006, LOCATE_parser___ReduceAction210___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction210___action, LOCATE_parser, 11017); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction210___action, LOCATE_parser, 11019); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction210___action, LOCATE_parser, 11021); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction210___action, LOCATE_parser, 11023); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 11032); nit_exit(1);}
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 11045, LOCATE_parser___ReduceAction210___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction210].i]) return;
-  return_label453: while(false);
-  init_table[VAL2OBJ( self)->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, 11049, LOCATE_parser___ReduceAction211___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction211___action, LOCATE_parser, 11061); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction211___action, LOCATE_parser, 11063); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction211___action, LOCATE_parser, 11065); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction211___action, LOCATE_parser, 11067); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction211___action, LOCATE_parser, 11071); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 11085); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 11098, LOCATE_parser___ReduceAction211___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction211].i]) return;
-  return_label455: while(false);
-  init_table[VAL2OBJ( self)->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, 11102, LOCATE_parser___ReduceAction212___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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, 11114); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction212___action, LOCATE_parser, 11116); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction212___action, LOCATE_parser, 11118); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction212___action, LOCATE_parser, 11120); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction212___action, LOCATE_parser, 11124); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 11131); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 11144, LOCATE_parser___ReduceAction212___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction212].i]) return;
-  return_label457: while(false);
-  init_table[VAL2OBJ( self)->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, 11148, LOCATE_parser___ReduceAction213___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction213___action, LOCATE_parser, 11161); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction213___action, LOCATE_parser, 11163); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction213___action, LOCATE_parser, 11165); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction213___action, LOCATE_parser, 11167); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction213___action, LOCATE_parser, 11171); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction213___action, LOCATE_parser, 11180); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 11187); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 11200, LOCATE_parser___ReduceAction213___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction213].i]) return;
-  return_label459: while(false);
-  init_table[VAL2OBJ( self)->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, 11204, LOCATE_parser___ReduceAction214___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction214___action, LOCATE_parser, 11216); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction214___action, LOCATE_parser, 11218); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction214___action, LOCATE_parser, 11220); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction214___action, LOCATE_parser, 11222); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction214___action, LOCATE_parser, 11226); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[17] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 11240); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 11253, LOCATE_parser___ReduceAction214___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction214].i]) return;
-  return_label461: while(false);
-  init_table[VAL2OBJ( self)->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, 11257, LOCATE_parser___ReduceAction215___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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, 11270); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction215___action, LOCATE_parser, 11272); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction215___action, LOCATE_parser, 11274); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction215___action, LOCATE_parser, 11276); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction215___action, LOCATE_parser, 11280); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction215___action, LOCATE_parser, 11289); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 11303); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 11316, LOCATE_parser___ReduceAction215___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction215].i]) return;
-  return_label463: while(false);
-  init_table[VAL2OBJ( self)->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, 11320, LOCATE_parser___ReduceAction216___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction216___action, LOCATE_parser, 11333); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction216___action, LOCATE_parser, 11335); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction216___action, LOCATE_parser, 11337); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction216___action, LOCATE_parser, 11339); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction216___action, LOCATE_parser, 11343); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction216___action, LOCATE_parser, 11345); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11359); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 11372, LOCATE_parser___ReduceAction216___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction216].i]) return;
-  return_label465: while(false);
-  init_table[VAL2OBJ( self)->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, 11376, LOCATE_parser___ReduceAction217___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction217___action, LOCATE_parser, 11390); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction217___action, LOCATE_parser, 11392); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction217___action, LOCATE_parser, 11394); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction217___action, LOCATE_parser, 11396); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction217___action, LOCATE_parser, 11400); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction217___action, LOCATE_parser, 11409); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction217___action, LOCATE_parser, 11411); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[19] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11425); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 11438, LOCATE_parser___ReduceAction217___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction217].i]) return;
-  return_label467: while(false);
-  init_table[VAL2OBJ( self)->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, 11442, LOCATE_parser___ReduceAction218___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction218___action, LOCATE_parser, 11454); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction218___action, LOCATE_parser, 11456); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction218___action, LOCATE_parser, 11458); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction218___action, LOCATE_parser, 11460); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction218___action, LOCATE_parser, 11462); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 11471); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 11484, LOCATE_parser___ReduceAction218___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction218].i]) return;
-  return_label469: while(false);
-  init_table[VAL2OBJ( self)->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, 11488, LOCATE_parser___ReduceAction219___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction219___action, LOCATE_parser, 11501); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction219___action, LOCATE_parser, 11503); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction219___action, LOCATE_parser, 11505); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction219___action, LOCATE_parser, 11507); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction219___action, LOCATE_parser, 11509); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction219___action, LOCATE_parser, 11513); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11527); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 11540, LOCATE_parser___ReduceAction219___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction219].i]) return;
-  return_label471: while(false);
-  init_table[VAL2OBJ( self)->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, 11544, LOCATE_parser___ReduceAction220___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction220___action, LOCATE_parser, 11557); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction220___action, LOCATE_parser, 11559); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction220___action, LOCATE_parser, 11561); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction220___action, LOCATE_parser, 11563); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction220___action, LOCATE_parser, 11565); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction220___action, LOCATE_parser, 11569); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11576); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 11589, LOCATE_parser___ReduceAction220___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction220].i]) return;
-  return_label473: while(false);
-  init_table[VAL2OBJ( self)->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, 11593, LOCATE_parser___ReduceAction221___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction221___action, LOCATE_parser, 11607); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction221___action, LOCATE_parser, 11609); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction221___action, LOCATE_parser, 11611); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11613); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11615); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction221___action, LOCATE_parser, 11619); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction221___action, LOCATE_parser, 11628); nit_exit(1);}
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11635); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 11648, LOCATE_parser___ReduceAction221___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction221].i]) return;
-  return_label475: while(false);
-  init_table[VAL2OBJ( self)->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, 11652, LOCATE_parser___ReduceAction222___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction222___action, LOCATE_parser, 11665); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction222___action, LOCATE_parser, 11667); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction222___action, LOCATE_parser, 11669); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction222___action, LOCATE_parser, 11671); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction222___action, LOCATE_parser, 11673); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction222___action, LOCATE_parser, 11677); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[19] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11691); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 11704, LOCATE_parser___ReduceAction222___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction222].i]) return;
-  return_label477: while(false);
-  init_table[VAL2OBJ( self)->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, 11708, LOCATE_parser___ReduceAction223___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction223___action, LOCATE_parser, 11722); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction223___action, LOCATE_parser, 11724); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction223___action, LOCATE_parser, 11726); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11728); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11730); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction223___action, LOCATE_parser, 11734); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction223___action, LOCATE_parser, 11743); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11757); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 11770, LOCATE_parser___ReduceAction223___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction223].i]) return;
-  return_label479: while(false);
-  init_table[VAL2OBJ( self)->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, 11774, LOCATE_parser___ReduceAction224___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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, 11788); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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, 11790); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction224___action, LOCATE_parser, 11792); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11794); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11796); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction224___action, LOCATE_parser, 11800); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction224___action, LOCATE_parser, 11802); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11816); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 11829, LOCATE_parser___ReduceAction224___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction224].i]) return;
-  return_label481: while(false);
-  init_table[VAL2OBJ( self)->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, 11833, LOCATE_parser___ReduceAction225___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction225___action, LOCATE_parser, 11848); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction225___action, LOCATE_parser, 11850); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction225___action, LOCATE_parser, 11852); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11854); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11856); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction225___action, LOCATE_parser, 11860); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction225___action, LOCATE_parser, 11869); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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___ReduceAction225___action, LOCATE_parser, 11871); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[21] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[25] = variable[26];
-  variable[26] =  variable[4] /*nodearraylist11*/;
-  variable[27] = TAG_Bool(( variable[26] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11885); nit_exit(1);}
-  variable[28] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[25] /*psignaturenode7*/,  variable[26] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*ppropdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  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, 11898, LOCATE_parser___ReduceAction225___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction225].i]) return;
-  return_label483: while(false);
-  init_table[VAL2OBJ( self)->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, 11902, LOCATE_parser___ReduceAction226___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction226___action, LOCATE_parser, 11913); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction226___action, LOCATE_parser, 11915); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction226___action, LOCATE_parser, 11917); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction226___action, LOCATE_parser, 11919); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode11*/, 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___ReduceAction226___action, LOCATE_parser, 11928); nit_exit(1);}
-  variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 11941, LOCATE_parser___ReduceAction226___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction226].i]) return;
-  return_label485: while(false);
-  init_table[VAL2OBJ( self)->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, 11945, LOCATE_parser___ReduceAction227___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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, 11957); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction227___action, LOCATE_parser, 11959); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction227___action, LOCATE_parser, 11961); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction227___action, LOCATE_parser, 11963); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction227___action, LOCATE_parser, 11967); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction227___action, LOCATE_parser, 11981); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 11994, LOCATE_parser___ReduceAction227___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction227].i]) return;
-  return_label487: while(false);
-  init_table[VAL2OBJ( self)->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, 11998, LOCATE_parser___ReduceAction228___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction228___action, LOCATE_parser, 12010); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction228___action, LOCATE_parser, 12012); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction228___action, LOCATE_parser, 12014); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction228___action, LOCATE_parser, 12016); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction228___action, LOCATE_parser, 12020); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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___ReduceAction228___action, LOCATE_parser, 12027); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 12040, LOCATE_parser___ReduceAction228___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction228].i]) return;
-  return_label489: while(false);
-  init_table[VAL2OBJ( self)->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, 12044, LOCATE_parser___ReduceAction229___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction229___action, LOCATE_parser, 12057); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction229___action, LOCATE_parser, 12059); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction229___action, LOCATE_parser, 12061); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction229___action, LOCATE_parser, 12063); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction229___action, LOCATE_parser, 12067); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction229___action, LOCATE_parser, 12076); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction229___action, LOCATE_parser, 12083); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 12096, LOCATE_parser___ReduceAction229___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction229].i]) return;
-  return_label491: while(false);
-  init_table[VAL2OBJ( self)->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, 12100, LOCATE_parser___ReduceAction230___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction230___action, LOCATE_parser, 12112); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction230___action, LOCATE_parser, 12114); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction230___action, LOCATE_parser, 12116); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction230___action, LOCATE_parser, 12118); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction230___action, LOCATE_parser, 12122); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[17] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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, 12136); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 12149, LOCATE_parser___ReduceAction230___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction230].i]) return;
-  return_label493: while(false);
-  init_table[VAL2OBJ( self)->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, 12153, LOCATE_parser___ReduceAction231___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction231___action, LOCATE_parser, 12166); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction231___action, LOCATE_parser, 12168); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction231___action, LOCATE_parser, 12170); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction231___action, LOCATE_parser, 12172); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction231___action, LOCATE_parser, 12176); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction231___action, LOCATE_parser, 12185); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  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___ReduceAction231___action, LOCATE_parser, 12199); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 12212, LOCATE_parser___ReduceAction231___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction231].i]) return;
-  return_label495: while(false);
-  init_table[VAL2OBJ( self)->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, 12216, LOCATE_parser___ReduceAction232___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction232___action, LOCATE_parser, 12229); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction232___action, LOCATE_parser, 12231); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction232___action, LOCATE_parser, 12233); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction232___action, LOCATE_parser, 12235); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction232___action, LOCATE_parser, 12239); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction232___action, LOCATE_parser, 12241); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction232___action, LOCATE_parser, 12255); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 12268, LOCATE_parser___ReduceAction232___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction232].i]) return;
-  return_label497: while(false);
-  init_table[VAL2OBJ( self)->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, 12272, LOCATE_parser___ReduceAction233___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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, 12286); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction233___action, LOCATE_parser, 12288); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction233___action, LOCATE_parser, 12290); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction233___action, LOCATE_parser, 12292); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction233___action, LOCATE_parser, 12296); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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, 12305); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction233___action, LOCATE_parser, 12307); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[19] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction233___action, LOCATE_parser, 12321); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 12334, LOCATE_parser___ReduceAction233___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction233].i]) return;
-  return_label499: while(false);
-  init_table[VAL2OBJ( self)->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, 12338, LOCATE_parser___ReduceAction234___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction234___action, LOCATE_parser, 12350); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction234___action, LOCATE_parser, 12352); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction234___action, LOCATE_parser, 12354); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction234___action, LOCATE_parser, 12356); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction234___action, LOCATE_parser, 12358); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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, 12367); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 12380, LOCATE_parser___ReduceAction234___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction234].i]) return;
-  return_label501: while(false);
-  init_table[VAL2OBJ( self)->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, 12384, LOCATE_parser___ReduceAction235___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction235___action, LOCATE_parser, 12397); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction235___action, LOCATE_parser, 12399); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction235___action, LOCATE_parser, 12401); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction235___action, LOCATE_parser, 12403); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction235___action, LOCATE_parser, 12405); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction235___action, LOCATE_parser, 12409); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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, 12423); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 12436, LOCATE_parser___ReduceAction235___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction235].i]) return;
-  return_label503: while(false);
-  init_table[VAL2OBJ( self)->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, 12440, LOCATE_parser___ReduceAction236___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction236___action, LOCATE_parser, 12453); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction236___action, LOCATE_parser, 12455); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction236___action, LOCATE_parser, 12457); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction236___action, LOCATE_parser, 12459); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction236___action, LOCATE_parser, 12461); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction236___action, LOCATE_parser, 12465); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode11*/, 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___ReduceAction236___action, LOCATE_parser, 12472); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 12485, LOCATE_parser___ReduceAction236___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction236].i]) return;
-  return_label505: while(false);
-  init_table[VAL2OBJ( self)->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, 12489, LOCATE_parser___ReduceAction237___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction237___action, LOCATE_parser, 12503); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction237___action, LOCATE_parser, 12505); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction237___action, LOCATE_parser, 12507); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12509); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12511); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction237___action, LOCATE_parser, 12515); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction237___action, LOCATE_parser, 12524); nit_exit(1);}
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction237___action, LOCATE_parser, 12531); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 12544, LOCATE_parser___ReduceAction237___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction237].i]) return;
-  return_label507: while(false);
-  init_table[VAL2OBJ( self)->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, 12548, LOCATE_parser___ReduceAction238___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction238___action, LOCATE_parser, 12561); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction238___action, LOCATE_parser, 12563); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction238___action, LOCATE_parser, 12565); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction238___action, LOCATE_parser, 12567); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction238___action, LOCATE_parser, 12569); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction238___action, LOCATE_parser, 12573); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[19] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction238___action, LOCATE_parser, 12587); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 12600, LOCATE_parser___ReduceAction238___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction238].i]) return;
-  return_label509: while(false);
-  init_table[VAL2OBJ( self)->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, 12604, LOCATE_parser___ReduceAction239___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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, 12618); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction239___action, LOCATE_parser, 12620); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction239___action, LOCATE_parser, 12622); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12624); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12626); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction239___action, LOCATE_parser, 12630); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction239___action, LOCATE_parser, 12639); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction239___action, LOCATE_parser, 12653); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 12666, LOCATE_parser___ReduceAction239___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction239].i]) return;
-  return_label511: while(false);
-  init_table[VAL2OBJ( self)->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, 12670, LOCATE_parser___ReduceAction240___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction240___action, LOCATE_parser, 12684); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction240___action, LOCATE_parser, 12686); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction240___action, LOCATE_parser, 12688); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12690); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12692); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction240___action, LOCATE_parser, 12696); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction240___action, LOCATE_parser, 12698); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction240___action, LOCATE_parser, 12712); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 12725, LOCATE_parser___ReduceAction240___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction240].i]) return;
-  return_label513: while(false);
-  init_table[VAL2OBJ( self)->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, 12729, LOCATE_parser___ReduceAction241___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction241___action, LOCATE_parser, 12744); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction241___action, LOCATE_parser, 12746); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction241___action, LOCATE_parser, 12748); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12750); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12752); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction241___action, LOCATE_parser, 12756); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction241___action, LOCATE_parser, 12765); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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___ReduceAction241___action, LOCATE_parser, 12767); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[21] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[25] = variable[26];
-  variable[26] =  variable[4] /*nodearraylist11*/;
-  variable[27] = TAG_Bool(( variable[26] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12781); nit_exit(1);}
-  variable[28] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[25] /*psignaturenode7*/,  variable[26] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*ppropdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  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, 12794, LOCATE_parser___ReduceAction241___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction241].i]) return;
-  return_label515: while(false);
-  init_table[VAL2OBJ( self)->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, 12798, LOCATE_parser___ReduceAction242___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction242___action, LOCATE_parser, 12810); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction242___action, LOCATE_parser, 12812); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction242___action, LOCATE_parser, 12814); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction242___action, LOCATE_parser, 12816); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction242___action, LOCATE_parser, 12825); nit_exit(1);}
-  variable[21] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 12838, LOCATE_parser___ReduceAction242___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction242].i]) return;
-  return_label517: while(false);
-  init_table[VAL2OBJ( self)->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, 12842, LOCATE_parser___ReduceAction243___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction243___action, LOCATE_parser, 12855); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction243___action, LOCATE_parser, 12857); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction243___action, LOCATE_parser, 12859); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction243___action, LOCATE_parser, 12861); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction243___action, LOCATE_parser, 12865); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction243___action, LOCATE_parser, 12879); nit_exit(1);}
-  variable[23] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 12892, LOCATE_parser___ReduceAction243___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction243].i]) return;
-  return_label519: while(false);
-  init_table[VAL2OBJ( self)->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, 12896, LOCATE_parser___ReduceAction244___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction244___action, LOCATE_parser, 12909); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction244___action, LOCATE_parser, 12911); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction244___action, LOCATE_parser, 12913); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction244___action, LOCATE_parser, 12915); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction244___action, LOCATE_parser, 12919); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode11*/, 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___ReduceAction244___action, LOCATE_parser, 12926); nit_exit(1);}
-  variable[23] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 12939, LOCATE_parser___ReduceAction244___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction244].i]) return;
-  return_label521: while(false);
-  init_table[VAL2OBJ( self)->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, 12943, LOCATE_parser___ReduceAction245___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction245___action, LOCATE_parser, 12957); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction245___action, LOCATE_parser, 12959); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction245___action, LOCATE_parser, 12961); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction245___action, LOCATE_parser, 12963); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction245___action, LOCATE_parser, 12967); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction245___action, LOCATE_parser, 12976); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction245___action, LOCATE_parser, 12983); nit_exit(1);}
-  variable[25] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 12996, LOCATE_parser___ReduceAction245___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction245].i]) return;
-  return_label523: while(false);
-  init_table[VAL2OBJ( self)->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, 13000, LOCATE_parser___ReduceAction246___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction246___action, LOCATE_parser, 13013); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction246___action, LOCATE_parser, 13015); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction246___action, LOCATE_parser, 13017); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction246___action, LOCATE_parser, 13019); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction246___action, LOCATE_parser, 13023); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction246___action, LOCATE_parser, 13037); nit_exit(1);}
-  variable[23] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 13050, LOCATE_parser___ReduceAction246___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction246].i]) return;
-  return_label525: while(false);
-  init_table[VAL2OBJ( self)->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, 13054, LOCATE_parser___ReduceAction247___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction247___action, LOCATE_parser, 13068); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction247___action, LOCATE_parser, 13070); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction247___action, LOCATE_parser, 13072); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction247___action, LOCATE_parser, 13074); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction247___action, LOCATE_parser, 13078); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction247___action, LOCATE_parser, 13087); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode13*/, 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___ReduceAction247___action, LOCATE_parser, 13101); nit_exit(1);}
-  variable[25] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 13114, LOCATE_parser___ReduceAction247___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction247].i]) return;
-  return_label527: while(false);
-  init_table[VAL2OBJ( self)->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, 13118, LOCATE_parser___ReduceAction248___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction248___action, LOCATE_parser, 13132); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction248___action, LOCATE_parser, 13134); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction248___action, LOCATE_parser, 13136); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction248___action, LOCATE_parser, 13138); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction248___action, LOCATE_parser, 13142); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction248___action, LOCATE_parser, 13144); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction248___action, LOCATE_parser, 13158); nit_exit(1);}
-  variable[25] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 13171, LOCATE_parser___ReduceAction248___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction248].i]) return;
-  return_label529: while(false);
-  init_table[VAL2OBJ( self)->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, 13175, LOCATE_parser___ReduceAction249___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction249___action, LOCATE_parser, 13190); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction249___action, LOCATE_parser, 13192); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 13194); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 13196); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction249___action, LOCATE_parser, 13200); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction249___action, LOCATE_parser, 13209); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction249___action, LOCATE_parser, 13211); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode13*/, 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___ReduceAction249___action, LOCATE_parser, 13225); nit_exit(1);}
-  variable[27] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 13238, LOCATE_parser___ReduceAction249___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction249].i]) return;
-  return_label531: while(false);
-  init_table[VAL2OBJ( self)->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, 13242, LOCATE_parser___ReduceAction250___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction250___action, LOCATE_parser, 13255); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction250___action, LOCATE_parser, 13257); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction250___action, LOCATE_parser, 13259); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction250___action, LOCATE_parser, 13261); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction250___action, LOCATE_parser, 13263); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode11*/, 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___ReduceAction250___action, LOCATE_parser, 13272); nit_exit(1);}
-  variable[23] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 13285, LOCATE_parser___ReduceAction250___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction250].i]) return;
-  return_label533: while(false);
-  init_table[VAL2OBJ( self)->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, 13289, LOCATE_parser___ReduceAction251___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction251___action, LOCATE_parser, 13303); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction251___action, LOCATE_parser, 13305); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction251___action, LOCATE_parser, 13307); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 13309); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 13311); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction251___action, LOCATE_parser, 13315); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction251___action, LOCATE_parser, 13329); nit_exit(1);}
-  variable[25] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 13342, LOCATE_parser___ReduceAction251___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction251].i]) return;
-  return_label535: while(false);
-  init_table[VAL2OBJ( self)->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, 13346, LOCATE_parser___ReduceAction252___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction252___action, LOCATE_parser, 13360); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction252___action, LOCATE_parser, 13362); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction252___action, LOCATE_parser, 13364); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 13366); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 13368); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction252___action, LOCATE_parser, 13372); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode10*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode11*/, 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___ReduceAction252___action, LOCATE_parser, 13379); nit_exit(1);}
-  variable[25] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 13392, LOCATE_parser___ReduceAction252___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction252].i]) return;
-  return_label537: while(false);
-  init_table[VAL2OBJ( self)->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, 13396, LOCATE_parser___ReduceAction253___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction253___action, LOCATE_parser, 13411); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction253___action, LOCATE_parser, 13413); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction253___action, LOCATE_parser, 13415); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 13417); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 13419); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction253___action, LOCATE_parser, 13423); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction253___action, LOCATE_parser, 13432); nit_exit(1);}
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode11*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode12*/, 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___ReduceAction253___action, LOCATE_parser, 13439); nit_exit(1);}
-  variable[27] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 13452, LOCATE_parser___ReduceAction253___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction253].i]) return;
-  return_label539: while(false);
-  init_table[VAL2OBJ( self)->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, 13456, LOCATE_parser___ReduceAction254___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction254___action, LOCATE_parser, 13470); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction254___action, LOCATE_parser, 13472); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction254___action, LOCATE_parser, 13474); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 13476); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 13478); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction254___action, LOCATE_parser, 13482); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[20] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  NIT_NULL /*null*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction254___action, LOCATE_parser, 13496); nit_exit(1);}
-  variable[25] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 13509, LOCATE_parser___ReduceAction254___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction254].i]) return;
-  return_label541: while(false);
-  init_table[VAL2OBJ( self)->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, 13513, LOCATE_parser___ReduceAction255___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction255___action, LOCATE_parser, 13528); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction255___action, LOCATE_parser, 13530); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction255___action, LOCATE_parser, 13532); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 13534); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 13536); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction255___action, LOCATE_parser, 13540); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction255___action, LOCATE_parser, 13549); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[21] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  NIT_NULL /*null*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode13*/, 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___ReduceAction255___action, LOCATE_parser, 13563); nit_exit(1);}
-  variable[27] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 13576, LOCATE_parser___ReduceAction255___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction255].i]) return;
-  return_label543: while(false);
-  init_table[VAL2OBJ( self)->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, 13580, LOCATE_parser___ReduceAction256___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction256___action, LOCATE_parser, 13595); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction256___action, LOCATE_parser, 13597); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction256___action, LOCATE_parser, 13599); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 13601); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 13603); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode9*/, 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___ReduceAction256___action, LOCATE_parser, 13607); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode10*/, 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___ReduceAction256___action, LOCATE_parser, 13609); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[21] =  variable[23] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode11*/,  variable[23] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode8*/,  variable[22] /*ptypenode9*/,  variable[21] /*listnode11*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode12*/, 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___ReduceAction256___action, LOCATE_parser, 13623); nit_exit(1);}
-  variable[27] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 13636, LOCATE_parser___ReduceAction256___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction256].i]) return;
-  return_label545: while(false);
-  init_table[VAL2OBJ( self)->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, 13640, LOCATE_parser___ReduceAction257___action};
-  val_t variable[30];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  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___ReduceAction257___action, LOCATE_parser, 13656); nit_exit(1);}
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  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___ReduceAction257___action, LOCATE_parser, 13658); nit_exit(1);}
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  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___ReduceAction257___action, LOCATE_parser, 13660); nit_exit(1);}
-  variable[19] =  variable[12] /*nodearraylist4*/;
-  variable[20] = TAG_Bool(( variable[19] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 13662); nit_exit(1);}
-  variable[20] =  variable[11] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 13664); nit_exit(1);}
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[23] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[22] = variable[23];
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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___ReduceAction257___action, LOCATE_parser, 13668); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[21] =  variable[23] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode9*/,  variable[23] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode10*/, 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___ReduceAction257___action, LOCATE_parser, 13677); nit_exit(1);}
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  variable[26] = TAG_Bool(( variable[25] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[25] /*listnode11*/, 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___ReduceAction257___action, LOCATE_parser, 13679); nit_exit(1);}
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[25] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[26])) { /*if*/
-    variable[26] = ((array___AbstractArray___is_empty_t)CALL( variable[22] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[22] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[26])) { /*if*/
-      variable[22] =  variable[25] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[22] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[22] /*listnode12*/,  variable[25] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[27] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[21] /*listnode9*/,  variable[24] /*ptypenode10*/,  variable[22] /*listnode12*/); /*new ASignature*/
-  variable[26] = variable[27];
-  variable[27] =  variable[5] /*nodearraylist11*/;
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode13*/, 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___ReduceAction257___action, LOCATE_parser, 13693); nit_exit(1);}
-  variable[29] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[16] /*pdocnode2*/,  variable[17] /*tkwredefnode3*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*tkwmethnode5*/,  variable[20] /*pmethidnode6*/,  variable[26] /*psignaturenode7*/,  variable[27] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  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, 13706, LOCATE_parser___ReduceAction257___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction257].i]) return;
-  return_label547: while(false);
-  init_table[VAL2OBJ( self)->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, 13710, LOCATE_parser___ReduceAction258___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction258___action, LOCATE_parser, 13720); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction258___action, LOCATE_parser, 13722); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction258___action, LOCATE_parser, 13724); nit_exit(1);}
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[13] /*listnode8*/,  NIT_NULL /*null*/,  variable[14] /*listnode10*/); /*new ASignature*/
-  variable[15] = variable[16];
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode11*/, 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___ReduceAction258___action, LOCATE_parser, 13733); nit_exit(1);}
-  variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 13746, LOCATE_parser___ReduceAction258___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction258].i]) return;
-  return_label549: while(false);
-  init_table[VAL2OBJ( self)->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, 13750, LOCATE_parser___ReduceAction259___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction259___action, LOCATE_parser, 13761); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction259___action, LOCATE_parser, 13763); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction259___action, LOCATE_parser, 13765); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction259___action, LOCATE_parser, 13769); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode9*/,  variable[16] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode9*/,  NIT_NULL /*null*/,  variable[15] /*listnode11*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode12*/, 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___ReduceAction259___action, LOCATE_parser, 13783); nit_exit(1);}
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 13796, LOCATE_parser___ReduceAction259___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction259].i]) return;
-  return_label551: while(false);
-  init_table[VAL2OBJ( self)->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, 13800, LOCATE_parser___ReduceAction260___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction260___action, LOCATE_parser, 13811); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction260___action, LOCATE_parser, 13813); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction260___action, LOCATE_parser, 13815); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode9*/, 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___ReduceAction260___action, LOCATE_parser, 13819); nit_exit(1);}
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  variable[16] /*ptypenode9*/,  variable[15] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode11*/, 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___ReduceAction260___action, LOCATE_parser, 13826); nit_exit(1);}
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 13839, LOCATE_parser___ReduceAction260___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction260].i]) return;
-  return_label553: while(false);
-  init_table[VAL2OBJ( self)->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, 13843, LOCATE_parser___ReduceAction261___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction261___action, LOCATE_parser, 13855); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction261___action, LOCATE_parser, 13857); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction261___action, LOCATE_parser, 13859); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction261___action, LOCATE_parser, 13863); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction261___action, LOCATE_parser, 13872); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  variable[18] /*ptypenode10*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction261___action, LOCATE_parser, 13879); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 13892, LOCATE_parser___ReduceAction261___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction261].i]) return;
-  return_label555: while(false);
-  init_table[VAL2OBJ( self)->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, 13896, LOCATE_parser___ReduceAction262___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction262___action, LOCATE_parser, 13907); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction262___action, LOCATE_parser, 13909); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction262___action, LOCATE_parser, 13911); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  variable[17] = TAG_Bool(( variable[16] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode10*/, 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___ReduceAction262___action, LOCATE_parser, 13915); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[15] =  variable[16] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode11*/,  variable[16] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  NIT_NULL /*null*/,  variable[15] /*listnode11*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode12*/, 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___ReduceAction262___action, LOCATE_parser, 13929); nit_exit(1);}
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 13942, LOCATE_parser___ReduceAction262___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction262].i]) return;
-  return_label557: while(false);
-  init_table[VAL2OBJ( self)->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, 13946, LOCATE_parser___ReduceAction263___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction263___action, LOCATE_parser, 13958); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction263___action, LOCATE_parser, 13960); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction263___action, LOCATE_parser, 13962); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction263___action, LOCATE_parser, 13966); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode11*/, 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___ReduceAction263___action, LOCATE_parser, 13975); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode12*/,  variable[18] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  NIT_NULL /*null*/,  variable[16] /*listnode12*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  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___ReduceAction263___action, LOCATE_parser, 13989); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14002, LOCATE_parser___ReduceAction263___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction263].i]) return;
-  return_label559: while(false);
-  init_table[VAL2OBJ( self)->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, 14006, LOCATE_parser___ReduceAction264___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction264___action, LOCATE_parser, 14018); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction264___action, LOCATE_parser, 14020); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction264___action, LOCATE_parser, 14022); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[17] /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 14026); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction264___action, LOCATE_parser, 14028); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  variable[17] /*ptypenode9*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction264___action, LOCATE_parser, 14042); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14055, LOCATE_parser___ReduceAction264___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction264].i]) return;
-  return_label561: while(false);
-  init_table[VAL2OBJ( self)->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, 14059, LOCATE_parser___ReduceAction265___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction265___action, LOCATE_parser, 14072); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction265___action, LOCATE_parser, 14074); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction265___action, LOCATE_parser, 14076); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction265___action, LOCATE_parser, 14080); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode10*/, 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___ReduceAction265___action, LOCATE_parser, 14089); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction265___action, LOCATE_parser, 14091); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[17] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  variable[19] /*ptypenode10*/,  variable[17] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  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___ReduceAction265___action, LOCATE_parser, 14105); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14118, LOCATE_parser___ReduceAction265___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction265].i]) return;
-  return_label563: while(false);
-  init_table[VAL2OBJ( self)->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, 14122, LOCATE_parser___ReduceAction266___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction266___action, LOCATE_parser, 14133); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction266___action, LOCATE_parser, 14135); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction266___action, LOCATE_parser, 14137); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction266___action, LOCATE_parser, 14139); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode11*/, 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___ReduceAction266___action, LOCATE_parser, 14148); nit_exit(1);}
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 14161, LOCATE_parser___ReduceAction266___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction266].i]) return;
-  return_label565: while(false);
-  init_table[VAL2OBJ( self)->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, 14165, LOCATE_parser___ReduceAction267___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction267___action, LOCATE_parser, 14177); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction267___action, LOCATE_parser, 14179); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction267___action, LOCATE_parser, 14181); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction267___action, LOCATE_parser, 14183); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction267___action, LOCATE_parser, 14187); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction267___action, LOCATE_parser, 14201); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14214, LOCATE_parser___ReduceAction267___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction267].i]) return;
-  return_label567: while(false);
-  init_table[VAL2OBJ( self)->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, 14218, LOCATE_parser___ReduceAction268___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction268___action, LOCATE_parser, 14230); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction268___action, LOCATE_parser, 14232); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction268___action, LOCATE_parser, 14234); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction268___action, LOCATE_parser, 14236); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction268___action, LOCATE_parser, 14240); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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___ReduceAction268___action, LOCATE_parser, 14247); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14260, LOCATE_parser___ReduceAction268___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction268].i]) return;
-  return_label569: while(false);
-  init_table[VAL2OBJ( self)->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, 14264, LOCATE_parser___ReduceAction269___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction269___action, LOCATE_parser, 14277); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction269___action, LOCATE_parser, 14279); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction269___action, LOCATE_parser, 14281); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction269___action, LOCATE_parser, 14283); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction269___action, LOCATE_parser, 14287); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction269___action, LOCATE_parser, 14296); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction269___action, LOCATE_parser, 14303); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14316, LOCATE_parser___ReduceAction269___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction269].i]) return;
-  return_label571: while(false);
-  init_table[VAL2OBJ( self)->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, 14320, LOCATE_parser___ReduceAction270___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction270___action, LOCATE_parser, 14332); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction270___action, LOCATE_parser, 14334); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction270___action, LOCATE_parser, 14336); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction270___action, LOCATE_parser, 14338); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction270___action, LOCATE_parser, 14342); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[17] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction270___action, LOCATE_parser, 14356); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14369, LOCATE_parser___ReduceAction270___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction270].i]) return;
-  return_label573: while(false);
-  init_table[VAL2OBJ( self)->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, 14373, LOCATE_parser___ReduceAction271___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction271___action, LOCATE_parser, 14386); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction271___action, LOCATE_parser, 14388); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction271___action, LOCATE_parser, 14390); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction271___action, LOCATE_parser, 14392); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction271___action, LOCATE_parser, 14396); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction271___action, LOCATE_parser, 14405); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  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___ReduceAction271___action, LOCATE_parser, 14419); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14432, LOCATE_parser___ReduceAction271___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction271].i]) return;
-  return_label575: while(false);
-  init_table[VAL2OBJ( self)->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, 14436, LOCATE_parser___ReduceAction272___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction272___action, LOCATE_parser, 14449); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction272___action, LOCATE_parser, 14451); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction272___action, LOCATE_parser, 14453); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction272___action, LOCATE_parser, 14455); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction272___action, LOCATE_parser, 14459); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction272___action, LOCATE_parser, 14461); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction272___action, LOCATE_parser, 14475); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14488, LOCATE_parser___ReduceAction272___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction272].i]) return;
-  return_label577: while(false);
-  init_table[VAL2OBJ( self)->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, 14492, LOCATE_parser___ReduceAction273___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction273___action, LOCATE_parser, 14506); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction273___action, LOCATE_parser, 14508); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction273___action, LOCATE_parser, 14510); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction273___action, LOCATE_parser, 14512); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction273___action, LOCATE_parser, 14516); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction273___action, LOCATE_parser, 14525); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction273___action, LOCATE_parser, 14527); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[19] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction273___action, LOCATE_parser, 14541); nit_exit(1);}
-  variable[26] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 14554, LOCATE_parser___ReduceAction273___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction273].i]) return;
-  return_label579: while(false);
-  init_table[VAL2OBJ( self)->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, 14558, LOCATE_parser___ReduceAction274___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction274___action, LOCATE_parser, 14569); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction274___action, LOCATE_parser, 14571); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction274___action, LOCATE_parser, 14573); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction274___action, LOCATE_parser, 14575); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode11*/, 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___ReduceAction274___action, LOCATE_parser, 14584); nit_exit(1);}
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  variable[14] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 14597, LOCATE_parser___ReduceAction274___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction274].i]) return;
-  return_label581: while(false);
-  init_table[VAL2OBJ( self)->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, 14601, LOCATE_parser___ReduceAction275___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction275___action, LOCATE_parser, 14613); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction275___action, LOCATE_parser, 14615); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction275___action, LOCATE_parser, 14617); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction275___action, LOCATE_parser, 14619); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction275___action, LOCATE_parser, 14623); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction275___action, LOCATE_parser, 14637); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14650, LOCATE_parser___ReduceAction275___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction275].i]) return;
-  return_label583: while(false);
-  init_table[VAL2OBJ( self)->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, 14654, LOCATE_parser___ReduceAction276___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction276___action, LOCATE_parser, 14666); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction276___action, LOCATE_parser, 14668); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction276___action, LOCATE_parser, 14670); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction276___action, LOCATE_parser, 14672); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction276___action, LOCATE_parser, 14676); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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___ReduceAction276___action, LOCATE_parser, 14683); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14696, LOCATE_parser___ReduceAction276___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction276].i]) return;
-  return_label585: while(false);
-  init_table[VAL2OBJ( self)->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, 14700, LOCATE_parser___ReduceAction277___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction277___action, LOCATE_parser, 14713); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction277___action, LOCATE_parser, 14715); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction277___action, LOCATE_parser, 14717); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction277___action, LOCATE_parser, 14719); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction277___action, LOCATE_parser, 14723); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction277___action, LOCATE_parser, 14732); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction277___action, LOCATE_parser, 14739); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14752, LOCATE_parser___ReduceAction277___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction277].i]) return;
-  return_label587: while(false);
-  init_table[VAL2OBJ( self)->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, 14756, LOCATE_parser___ReduceAction278___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction278___action, LOCATE_parser, 14768); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction278___action, LOCATE_parser, 14770); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction278___action, LOCATE_parser, 14772); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction278___action, LOCATE_parser, 14774); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction278___action, LOCATE_parser, 14778); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[17] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction278___action, LOCATE_parser, 14792); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 14805, LOCATE_parser___ReduceAction278___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction278].i]) return;
-  return_label589: while(false);
-  init_table[VAL2OBJ( self)->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, 14809, LOCATE_parser___ReduceAction279___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction279___action, LOCATE_parser, 14822); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction279___action, LOCATE_parser, 14824); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction279___action, LOCATE_parser, 14826); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction279___action, LOCATE_parser, 14828); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction279___action, LOCATE_parser, 14832); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction279___action, LOCATE_parser, 14841); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  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___ReduceAction279___action, LOCATE_parser, 14855); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14868, LOCATE_parser___ReduceAction279___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction279].i]) return;
-  return_label591: while(false);
-  init_table[VAL2OBJ( self)->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, 14872, LOCATE_parser___ReduceAction280___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction280___action, LOCATE_parser, 14885); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction280___action, LOCATE_parser, 14887); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction280___action, LOCATE_parser, 14889); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction280___action, LOCATE_parser, 14891); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction280___action, LOCATE_parser, 14895); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction280___action, LOCATE_parser, 14897); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction280___action, LOCATE_parser, 14911); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 14924, LOCATE_parser___ReduceAction280___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction280].i]) return;
-  return_label593: while(false);
-  init_table[VAL2OBJ( self)->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, 14928, LOCATE_parser___ReduceAction281___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction281___action, LOCATE_parser, 14942); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction281___action, LOCATE_parser, 14944); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction281___action, LOCATE_parser, 14946); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction281___action, LOCATE_parser, 14948); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction281___action, LOCATE_parser, 14952); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction281___action, LOCATE_parser, 14961); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction281___action, LOCATE_parser, 14963); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[19] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction281___action, LOCATE_parser, 14977); nit_exit(1);}
-  variable[26] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 14990, LOCATE_parser___ReduceAction281___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction281].i]) return;
-  return_label595: while(false);
-  init_table[VAL2OBJ( self)->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, 14994, LOCATE_parser___ReduceAction282___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction282___action, LOCATE_parser, 15006); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction282___action, LOCATE_parser, 15008); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction282___action, LOCATE_parser, 15010); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction282___action, LOCATE_parser, 15012); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction282___action, LOCATE_parser, 15014); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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___ReduceAction282___action, LOCATE_parser, 15023); nit_exit(1);}
-  variable[22] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 15036, LOCATE_parser___ReduceAction282___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction282].i]) return;
-  return_label597: while(false);
-  init_table[VAL2OBJ( self)->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, 15040, LOCATE_parser___ReduceAction283___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction283___action, LOCATE_parser, 15053); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction283___action, LOCATE_parser, 15055); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction283___action, LOCATE_parser, 15057); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction283___action, LOCATE_parser, 15059); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction283___action, LOCATE_parser, 15061); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction283___action, LOCATE_parser, 15065); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction283___action, LOCATE_parser, 15079); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 15092, LOCATE_parser___ReduceAction283___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction283].i]) return;
-  return_label599: while(false);
-  init_table[VAL2OBJ( self)->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, 15096, LOCATE_parser___ReduceAction284___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction284___action, LOCATE_parser, 15109); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction284___action, LOCATE_parser, 15111); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction284___action, LOCATE_parser, 15113); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction284___action, LOCATE_parser, 15115); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction284___action, LOCATE_parser, 15117); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction284___action, LOCATE_parser, 15121); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode11*/, 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___ReduceAction284___action, LOCATE_parser, 15128); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 15141, LOCATE_parser___ReduceAction284___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction284].i]) return;
-  return_label601: while(false);
-  init_table[VAL2OBJ( self)->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, 15145, LOCATE_parser___ReduceAction285___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction285___action, LOCATE_parser, 15159); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction285___action, LOCATE_parser, 15161); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction285___action, LOCATE_parser, 15163); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction285___action, LOCATE_parser, 15165); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction285___action, LOCATE_parser, 15167); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction285___action, LOCATE_parser, 15171); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction285___action, LOCATE_parser, 15180); nit_exit(1);}
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction285___action, LOCATE_parser, 15187); nit_exit(1);}
-  variable[26] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 15200, LOCATE_parser___ReduceAction285___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction285].i]) return;
-  return_label603: while(false);
-  init_table[VAL2OBJ( self)->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, 15204, LOCATE_parser___ReduceAction286___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction286___action, LOCATE_parser, 15217); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction286___action, LOCATE_parser, 15219); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction286___action, LOCATE_parser, 15221); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction286___action, LOCATE_parser, 15223); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction286___action, LOCATE_parser, 15225); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction286___action, LOCATE_parser, 15229); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[19] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction286___action, LOCATE_parser, 15243); nit_exit(1);}
-  variable[24] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 15256, LOCATE_parser___ReduceAction286___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction286].i]) return;
-  return_label605: while(false);
-  init_table[VAL2OBJ( self)->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, 15260, LOCATE_parser___ReduceAction287___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction287___action, LOCATE_parser, 15274); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction287___action, LOCATE_parser, 15276); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction287___action, LOCATE_parser, 15278); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 15280); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 15282); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction287___action, LOCATE_parser, 15286); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction287___action, LOCATE_parser, 15295); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction287___action, LOCATE_parser, 15309); nit_exit(1);}
-  variable[26] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 15322, LOCATE_parser___ReduceAction287___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction287].i]) return;
-  return_label607: while(false);
-  init_table[VAL2OBJ( self)->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, 15326, LOCATE_parser___ReduceAction288___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction288___action, LOCATE_parser, 15340); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction288___action, LOCATE_parser, 15342); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction288___action, LOCATE_parser, 15344); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction288___action, LOCATE_parser, 15346); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction288___action, LOCATE_parser, 15348); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction288___action, LOCATE_parser, 15352); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction288___action, LOCATE_parser, 15354); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction288___action, LOCATE_parser, 15368); nit_exit(1);}
-  variable[26] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 15381, LOCATE_parser___ReduceAction288___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction288].i]) return;
-  return_label609: while(false);
-  init_table[VAL2OBJ( self)->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, 15385, LOCATE_parser___ReduceAction289___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction289___action, LOCATE_parser, 15400); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction289___action, LOCATE_parser, 15402); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction289___action, LOCATE_parser, 15404); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 15406); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 15408); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction289___action, LOCATE_parser, 15412); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction289___action, LOCATE_parser, 15421); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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___ReduceAction289___action, LOCATE_parser, 15423); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[21] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[25] = variable[26];
-  variable[26] =  variable[4] /*nodearraylist11*/;
-  variable[27] = TAG_Bool(( variable[26] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 15437); nit_exit(1);}
-  variable[28] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwinitnode5*/,  variable[19] /*pmethidnode6*/,  variable[25] /*psignaturenode7*/,  variable[26] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*ppropdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  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, 15450, LOCATE_parser___ReduceAction289___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction289].i]) return;
-  return_label611: while(false);
-  init_table[VAL2OBJ( self)->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, 15454, LOCATE_parser___ReduceAction290___action};
-  val_t variable[20];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction290___action, LOCATE_parser, 15465); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction290___action, LOCATE_parser, 15467); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction290___action, LOCATE_parser, 15469); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  NIT_NULL /*null*/,  variable[15] /*listnode10*/); /*new ASignature*/
-  variable[16] = variable[17];
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction290___action, LOCATE_parser, 15478); nit_exit(1);}
-  variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  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, 15491, LOCATE_parser___ReduceAction290___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction290].i]) return;
-  return_label613: while(false);
-  init_table[VAL2OBJ( self)->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, 15495, LOCATE_parser___ReduceAction291___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction291___action, LOCATE_parser, 15507); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction291___action, LOCATE_parser, 15509); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction291___action, LOCATE_parser, 15511); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction291___action, LOCATE_parser, 15515); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode12*/, 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___ReduceAction291___action, LOCATE_parser, 15529); nit_exit(1);}
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 15542, LOCATE_parser___ReduceAction291___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction291].i]) return;
-  return_label615: while(false);
-  init_table[VAL2OBJ( self)->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, 15546, LOCATE_parser___ReduceAction292___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction292___action, LOCATE_parser, 15558); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction292___action, LOCATE_parser, 15560); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction292___action, LOCATE_parser, 15562); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[17] /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction292___action, LOCATE_parser, 15566); nit_exit(1);}
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  variable[17] /*ptypenode9*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction292___action, LOCATE_parser, 15573); nit_exit(1);}
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 15586, LOCATE_parser___ReduceAction292___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction292].i]) return;
-  return_label617: while(false);
-  init_table[VAL2OBJ( self)->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, 15590, LOCATE_parser___ReduceAction293___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction293___action, LOCATE_parser, 15603); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction293___action, LOCATE_parser, 15605); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction293___action, LOCATE_parser, 15607); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction293___action, LOCATE_parser, 15611); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode10*/, 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___ReduceAction293___action, LOCATE_parser, 15620); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  variable[19] /*ptypenode10*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction293___action, LOCATE_parser, 15627); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 15640, LOCATE_parser___ReduceAction293___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction293].i]) return;
-  return_label619: while(false);
-  init_table[VAL2OBJ( self)->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, 15644, LOCATE_parser___ReduceAction294___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction294___action, LOCATE_parser, 15656); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction294___action, LOCATE_parser, 15658); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction294___action, LOCATE_parser, 15660); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode10*/, 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___ReduceAction294___action, LOCATE_parser, 15664); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[16] =  variable[17] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[17] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode12*/, 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___ReduceAction294___action, LOCATE_parser, 15678); nit_exit(1);}
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 15691, LOCATE_parser___ReduceAction294___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction294].i]) return;
-  return_label621: while(false);
-  init_table[VAL2OBJ( self)->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, 15695, LOCATE_parser___ReduceAction295___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction295___action, LOCATE_parser, 15708); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction295___action, LOCATE_parser, 15710); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction295___action, LOCATE_parser, 15712); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction295___action, LOCATE_parser, 15716); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode11*/, 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___ReduceAction295___action, LOCATE_parser, 15725); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[19] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode12*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode13*/, 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___ReduceAction295___action, LOCATE_parser, 15739); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 15752, LOCATE_parser___ReduceAction295___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction295].i]) return;
-  return_label623: while(false);
-  init_table[VAL2OBJ( self)->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, 15756, LOCATE_parser___ReduceAction296___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction296___action, LOCATE_parser, 15769); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction296___action, LOCATE_parser, 15771); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction296___action, LOCATE_parser, 15773); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction296___action, LOCATE_parser, 15777); nit_exit(1);}
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction296___action, LOCATE_parser, 15779); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction296___action, LOCATE_parser, 15793); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 15806, LOCATE_parser___ReduceAction296___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction296].i]) return;
-  return_label625: while(false);
-  init_table[VAL2OBJ( self)->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, 15810, LOCATE_parser___ReduceAction297___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction297___action, LOCATE_parser, 15824); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction297___action, LOCATE_parser, 15826); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction297___action, LOCATE_parser, 15828); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction297___action, LOCATE_parser, 15832); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction297___action, LOCATE_parser, 15841); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction297___action, LOCATE_parser, 15843); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[18] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode13*/, 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___ReduceAction297___action, LOCATE_parser, 15857); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 15870, LOCATE_parser___ReduceAction297___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction297].i]) return;
-  return_label627: while(false);
-  init_table[VAL2OBJ( self)->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, 15874, LOCATE_parser___ReduceAction298___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction298___action, LOCATE_parser, 15886); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction298___action, LOCATE_parser, 15888); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction298___action, LOCATE_parser, 15890); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction298___action, LOCATE_parser, 15892); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction298___action, LOCATE_parser, 15901); nit_exit(1);}
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 15914, LOCATE_parser___ReduceAction298___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction298].i]) return;
-  return_label629: while(false);
-  init_table[VAL2OBJ( self)->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, 15918, LOCATE_parser___ReduceAction299___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction299___action, LOCATE_parser, 15931); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction299___action, LOCATE_parser, 15933); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction299___action, LOCATE_parser, 15935); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction299___action, LOCATE_parser, 15937); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction299___action, LOCATE_parser, 15941); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction299___action, LOCATE_parser, 15955); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 15968, LOCATE_parser___ReduceAction299___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction299].i]) return;
-  return_label631: while(false);
-  init_table[VAL2OBJ( self)->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, 15972, LOCATE_parser___ReduceAction300___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction300___action, LOCATE_parser, 15985); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction300___action, LOCATE_parser, 15987); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction300___action, LOCATE_parser, 15989); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction300___action, LOCATE_parser, 15991); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction300___action, LOCATE_parser, 15995); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode11*/, 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___ReduceAction300___action, LOCATE_parser, 16002); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 16015, LOCATE_parser___ReduceAction300___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction300].i]) return;
-  return_label633: while(false);
-  init_table[VAL2OBJ( self)->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, 16019, LOCATE_parser___ReduceAction301___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction301___action, LOCATE_parser, 16033); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction301___action, LOCATE_parser, 16035); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction301___action, LOCATE_parser, 16037); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction301___action, LOCATE_parser, 16039); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction301___action, LOCATE_parser, 16043); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction301___action, LOCATE_parser, 16052); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction301___action, LOCATE_parser, 16059); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16072, LOCATE_parser___ReduceAction301___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction301].i]) return;
-  return_label635: while(false);
-  init_table[VAL2OBJ( self)->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, 16076, LOCATE_parser___ReduceAction302___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction302___action, LOCATE_parser, 16089); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction302___action, LOCATE_parser, 16091); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction302___action, LOCATE_parser, 16093); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction302___action, LOCATE_parser, 16095); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction302___action, LOCATE_parser, 16099); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction302___action, LOCATE_parser, 16113); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 16126, LOCATE_parser___ReduceAction302___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction302].i]) return;
-  return_label637: while(false);
-  init_table[VAL2OBJ( self)->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, 16130, LOCATE_parser___ReduceAction303___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction303___action, LOCATE_parser, 16144); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction303___action, LOCATE_parser, 16146); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction303___action, LOCATE_parser, 16148); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction303___action, LOCATE_parser, 16150); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction303___action, LOCATE_parser, 16154); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction303___action, LOCATE_parser, 16163); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode13*/, 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___ReduceAction303___action, LOCATE_parser, 16177); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16190, LOCATE_parser___ReduceAction303___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction303].i]) return;
-  return_label639: while(false);
-  init_table[VAL2OBJ( self)->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, 16194, LOCATE_parser___ReduceAction304___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction304___action, LOCATE_parser, 16208); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction304___action, LOCATE_parser, 16210); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction304___action, LOCATE_parser, 16212); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction304___action, LOCATE_parser, 16214); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction304___action, LOCATE_parser, 16218); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction304___action, LOCATE_parser, 16220); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction304___action, LOCATE_parser, 16234); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16247, LOCATE_parser___ReduceAction304___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction304].i]) return;
-  return_label641: while(false);
-  init_table[VAL2OBJ( self)->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, 16251, LOCATE_parser___ReduceAction305___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction305___action, LOCATE_parser, 16266); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction305___action, LOCATE_parser, 16268); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction305___action, LOCATE_parser, 16270); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction305___action, LOCATE_parser, 16272); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction305___action, LOCATE_parser, 16276); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction305___action, LOCATE_parser, 16285); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction305___action, LOCATE_parser, 16287); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode13*/, 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___ReduceAction305___action, LOCATE_parser, 16301); nit_exit(1);}
-  variable[27] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 16314, LOCATE_parser___ReduceAction305___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction305].i]) return;
-  return_label643: while(false);
-  init_table[VAL2OBJ( self)->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, 16318, LOCATE_parser___ReduceAction306___action};
-  val_t variable[22];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction306___action, LOCATE_parser, 16330); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction306___action, LOCATE_parser, 16332); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction306___action, LOCATE_parser, 16334); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction306___action, LOCATE_parser, 16336); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  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___ReduceAction306___action, LOCATE_parser, 16345); nit_exit(1);}
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  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, 16358, LOCATE_parser___ReduceAction306___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction306].i]) return;
-  return_label645: while(false);
-  init_table[VAL2OBJ( self)->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, 16362, LOCATE_parser___ReduceAction307___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction307___action, LOCATE_parser, 16375); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction307___action, LOCATE_parser, 16377); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction307___action, LOCATE_parser, 16379); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction307___action, LOCATE_parser, 16381); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction307___action, LOCATE_parser, 16385); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction307___action, LOCATE_parser, 16399); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 16412, LOCATE_parser___ReduceAction307___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction307].i]) return;
-  return_label647: while(false);
-  init_table[VAL2OBJ( self)->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, 16416, LOCATE_parser___ReduceAction308___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction308___action, LOCATE_parser, 16429); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction308___action, LOCATE_parser, 16431); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction308___action, LOCATE_parser, 16433); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction308___action, LOCATE_parser, 16435); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction308___action, LOCATE_parser, 16439); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode11*/, 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___ReduceAction308___action, LOCATE_parser, 16446); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 16459, LOCATE_parser___ReduceAction308___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction308].i]) return;
-  return_label649: while(false);
-  init_table[VAL2OBJ( self)->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, 16463, LOCATE_parser___ReduceAction309___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction309___action, LOCATE_parser, 16477); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction309___action, LOCATE_parser, 16479); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction309___action, LOCATE_parser, 16481); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction309___action, LOCATE_parser, 16483); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction309___action, LOCATE_parser, 16487); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction309___action, LOCATE_parser, 16496); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction309___action, LOCATE_parser, 16503); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16516, LOCATE_parser___ReduceAction309___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction309].i]) return;
-  return_label651: while(false);
-  init_table[VAL2OBJ( self)->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, 16520, LOCATE_parser___ReduceAction310___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction310___action, LOCATE_parser, 16533); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction310___action, LOCATE_parser, 16535); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction310___action, LOCATE_parser, 16537); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction310___action, LOCATE_parser, 16539); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction310___action, LOCATE_parser, 16543); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode12*/, 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___ReduceAction310___action, LOCATE_parser, 16557); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 16570, LOCATE_parser___ReduceAction310___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction310].i]) return;
-  return_label653: while(false);
-  init_table[VAL2OBJ( self)->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, 16574, LOCATE_parser___ReduceAction311___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction311___action, LOCATE_parser, 16588); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction311___action, LOCATE_parser, 16590); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction311___action, LOCATE_parser, 16592); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction311___action, LOCATE_parser, 16594); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction311___action, LOCATE_parser, 16598); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction311___action, LOCATE_parser, 16607); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode13*/, 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___ReduceAction311___action, LOCATE_parser, 16621); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16634, LOCATE_parser___ReduceAction311___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction311].i]) return;
-  return_label655: while(false);
-  init_table[VAL2OBJ( self)->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, 16638, LOCATE_parser___ReduceAction312___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction312___action, LOCATE_parser, 16652); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction312___action, LOCATE_parser, 16654); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction312___action, LOCATE_parser, 16656); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction312___action, LOCATE_parser, 16658); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction312___action, LOCATE_parser, 16662); nit_exit(1);}
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction312___action, LOCATE_parser, 16664); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction312___action, LOCATE_parser, 16678); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16691, LOCATE_parser___ReduceAction312___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction312].i]) return;
-  return_label657: while(false);
-  init_table[VAL2OBJ( self)->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, 16695, LOCATE_parser___ReduceAction313___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction313___action, LOCATE_parser, 16710); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction313___action, LOCATE_parser, 16712); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction313___action, LOCATE_parser, 16714); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction313___action, LOCATE_parser, 16716); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction313___action, LOCATE_parser, 16720); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction313___action, LOCATE_parser, 16729); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction313___action, LOCATE_parser, 16731); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode13*/, 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___ReduceAction313___action, LOCATE_parser, 16745); nit_exit(1);}
-  variable[27] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 16758, LOCATE_parser___ReduceAction313___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction313].i]) return;
-  return_label659: while(false);
-  init_table[VAL2OBJ( self)->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, 16762, LOCATE_parser___ReduceAction314___action};
-  val_t variable[24];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction314___action, LOCATE_parser, 16775); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction314___action, LOCATE_parser, 16777); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction314___action, LOCATE_parser, 16779); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction314___action, LOCATE_parser, 16781); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction314___action, LOCATE_parser, 16783); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[21] =  variable[5] /*nodearraylist8*/;
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode11*/, 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___ReduceAction314___action, LOCATE_parser, 16792); nit_exit(1);}
-  variable[23] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  variable[21] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  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, 16805, LOCATE_parser___ReduceAction314___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction314].i]) return;
-  return_label661: while(false);
-  init_table[VAL2OBJ( self)->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, 16809, LOCATE_parser___ReduceAction315___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction315___action, LOCATE_parser, 16823); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction315___action, LOCATE_parser, 16825); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction315___action, LOCATE_parser, 16827); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction315___action, LOCATE_parser, 16829); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction315___action, LOCATE_parser, 16831); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction315___action, LOCATE_parser, 16835); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction315___action, LOCATE_parser, 16849); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16862, LOCATE_parser___ReduceAction315___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction315].i]) return;
-  return_label663: while(false);
-  init_table[VAL2OBJ( self)->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, 16866, LOCATE_parser___ReduceAction316___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction316___action, LOCATE_parser, 16880); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction316___action, LOCATE_parser, 16882); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction316___action, LOCATE_parser, 16884); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction316___action, LOCATE_parser, 16886); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction316___action, LOCATE_parser, 16888); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction316___action, LOCATE_parser, 16892); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode10*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode11*/, 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___ReduceAction316___action, LOCATE_parser, 16899); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode11*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 16912, LOCATE_parser___ReduceAction316___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction316].i]) return;
-  return_label665: while(false);
-  init_table[VAL2OBJ( self)->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, 16916, LOCATE_parser___ReduceAction317___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction317___action, LOCATE_parser, 16931); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction317___action, LOCATE_parser, 16933); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction317___action, LOCATE_parser, 16935); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 16937); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 16939); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction317___action, LOCATE_parser, 16943); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction317___action, LOCATE_parser, 16952); nit_exit(1);}
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode11*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode12*/, 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___ReduceAction317___action, LOCATE_parser, 16959); nit_exit(1);}
-  variable[27] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwinitnode5*/,  variable[19] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 16972, LOCATE_parser___ReduceAction317___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction317].i]) return;
-  return_label667: while(false);
-  init_table[VAL2OBJ( self)->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, 16976, LOCATE_parser___ReduceAction318___action};
-  val_t variable[26];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction318___action, LOCATE_parser, 16990); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction318___action, LOCATE_parser, 16992); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction318___action, LOCATE_parser, 16994); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction318___action, LOCATE_parser, 16996); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction318___action, LOCATE_parser, 16998); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction318___action, LOCATE_parser, 17002); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[20] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  NIT_NULL /*null*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[23] =  variable[5] /*nodearraylist9*/;
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode12*/, 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___ReduceAction318___action, LOCATE_parser, 17016); nit_exit(1);}
-  variable[25] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwinitnode5*/,  variable[18] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  variable[23] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  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, 17029, LOCATE_parser___ReduceAction318___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction318].i]) return;
-  return_label669: while(false);
-  init_table[VAL2OBJ( self)->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, 17033, LOCATE_parser___ReduceAction319___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction319___action, LOCATE_parser, 17048); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction319___action, LOCATE_parser, 17050); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction319___action, LOCATE_parser, 17052); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 17054); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 17056); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction319___action, LOCATE_parser, 17060); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction319___action, LOCATE_parser, 17069); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[21] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  NIT_NULL /*null*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode13*/, 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___ReduceAction319___action, LOCATE_parser, 17083); nit_exit(1);}
-  variable[27] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwinitnode5*/,  variable[19] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 17096, LOCATE_parser___ReduceAction319___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction319].i]) return;
-  return_label671: while(false);
-  init_table[VAL2OBJ( self)->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, 17100, LOCATE_parser___ReduceAction320___action};
-  val_t variable[28];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction320___action, LOCATE_parser, 17115); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction320___action, LOCATE_parser, 17117); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction320___action, LOCATE_parser, 17119); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction320___action, LOCATE_parser, 17121); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction320___action, LOCATE_parser, 17123); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode9*/, 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___ReduceAction320___action, LOCATE_parser, 17127); nit_exit(1);}
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode10*/, 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___ReduceAction320___action, LOCATE_parser, 17129); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[21] =  variable[23] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode11*/,  variable[23] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode8*/,  variable[22] /*ptypenode9*/,  variable[21] /*listnode11*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[25] =  variable[5] /*nodearraylist10*/;
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode12*/, 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___ReduceAction320___action, LOCATE_parser, 17143); nit_exit(1);}
-  variable[27] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwinitnode5*/,  variable[19] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  variable[25] /*pexprnode12*/); /*new AConcreteInitPropdef*/
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  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, 17156, LOCATE_parser___ReduceAction320___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction320].i]) return;
-  return_label673: while(false);
-  init_table[VAL2OBJ( self)->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, 17160, LOCATE_parser___ReduceAction321___action};
-  val_t variable[30];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  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___ReduceAction321___action, LOCATE_parser, 17176); nit_exit(1);}
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  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___ReduceAction321___action, LOCATE_parser, 17178); nit_exit(1);}
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  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___ReduceAction321___action, LOCATE_parser, 17180); nit_exit(1);}
-  variable[19] =  variable[12] /*nodearraylist4*/;
-  variable[20] = TAG_Bool(( variable[19] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 17182); nit_exit(1);}
-  variable[20] =  variable[11] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 17184); nit_exit(1);}
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[23] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[22] = variable[23];
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  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___ReduceAction321___action, LOCATE_parser, 17188); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[21] =  variable[23] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode9*/,  variable[23] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode10*/, 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___ReduceAction321___action, LOCATE_parser, 17197); nit_exit(1);}
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  variable[26] = TAG_Bool(( variable[25] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[25] /*listnode11*/, 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___ReduceAction321___action, LOCATE_parser, 17199); nit_exit(1);}
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[25] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[26])) { /*if*/
-    variable[26] = ((array___AbstractArray___is_empty_t)CALL( variable[22] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[22] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[26])) { /*if*/
-      variable[22] =  variable[25] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[22] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[22] /*listnode12*/,  variable[25] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[27] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[21] /*listnode9*/,  variable[24] /*ptypenode10*/,  variable[22] /*listnode12*/); /*new ASignature*/
-  variable[26] = variable[27];
-  variable[27] =  variable[5] /*nodearraylist11*/;
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode13*/, 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___ReduceAction321___action, LOCATE_parser, 17213); nit_exit(1);}
-  variable[29] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[16] /*pdocnode2*/,  variable[17] /*tkwredefnode3*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*tkwinitnode5*/,  variable[20] /*pmethidnode6*/,  variable[26] /*psignaturenode7*/,  variable[27] /*pexprnode13*/); /*new AConcreteInitPropdef*/
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  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, 17226, LOCATE_parser___ReduceAction321___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction321].i]) return;
-  return_label675: while(false);
-  init_table[VAL2OBJ( self)->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, 17230, LOCATE_parser___ReduceAction322___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction322___action, LOCATE_parser, 17239); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction322___action, LOCATE_parser, 17241); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction322___action, LOCATE_parser, 17243); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction322___action, LOCATE_parser, 17245); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction322___action, LOCATE_parser, 17247); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 17259, LOCATE_parser___ReduceAction322___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction322].i]) return;
-  return_label677: while(false);
-  init_table[VAL2OBJ( self)->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, 17263, LOCATE_parser___ReduceAction323___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction323___action, LOCATE_parser, 17273); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction323___action, LOCATE_parser, 17275); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction323___action, LOCATE_parser, 17277); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction323___action, LOCATE_parser, 17279); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction323___action, LOCATE_parser, 17281); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction323___action, LOCATE_parser, 17283); nit_exit(1);}
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 17295, LOCATE_parser___ReduceAction323___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction323].i]) return;
-  return_label679: while(false);
-  init_table[VAL2OBJ( self)->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, 17299, LOCATE_parser___ReduceAction324___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction324___action, LOCATE_parser, 17305); nit_exit(1);}
-  variable[3] =  variable[6] /*ppropdefnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 17309, LOCATE_parser___ReduceAction324___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction324].i]) return;
-  return_label681: while(false);
-  init_table[VAL2OBJ( self)->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, 17313, LOCATE_parser___ReduceAction325___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction325___action, LOCATE_parser, 17323); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction325___action, LOCATE_parser, 17325); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  variable[13] = TAG_Bool(( variable[12] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction325___action, LOCATE_parser, 17327); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  variable[14] = TAG_Bool(( variable[13] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction325___action, LOCATE_parser, 17329); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[14] /*listnode8*/,  NIT_NULL /*null*/,  variable[15] /*listnode10*/); /*new ASignature*/
-  variable[16] = variable[17];
-  variable[18] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwmethnode5*/,  variable[13] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 17349, LOCATE_parser___ReduceAction325___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction325].i]) return;
-  return_label683: while(false);
-  init_table[VAL2OBJ( self)->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, 17353, LOCATE_parser___ReduceAction326___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction326___action, LOCATE_parser, 17364); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction326___action, LOCATE_parser, 17366); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction326___action, LOCATE_parser, 17368); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction326___action, LOCATE_parser, 17370); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction326___action, LOCATE_parser, 17374); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode9*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 17399, LOCATE_parser___ReduceAction326___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction326].i]) return;
-  return_label685: while(false);
-  init_table[VAL2OBJ( self)->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, 17403, LOCATE_parser___ReduceAction327___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction327___action, LOCATE_parser, 17414); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction327___action, LOCATE_parser, 17416); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction327___action, LOCATE_parser, 17418); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction327___action, LOCATE_parser, 17420); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[17] /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction327___action, LOCATE_parser, 17424); nit_exit(1);}
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  variable[17] /*ptypenode9*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 17442, LOCATE_parser___ReduceAction327___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction327].i]) return;
-  return_label687: while(false);
-  init_table[VAL2OBJ( self)->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, 17446, LOCATE_parser___ReduceAction328___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction328___action, LOCATE_parser, 17458); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction328___action, LOCATE_parser, 17460); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction328___action, LOCATE_parser, 17462); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction328___action, LOCATE_parser, 17464); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction328___action, LOCATE_parser, 17468); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode10*/, 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___ReduceAction328___action, LOCATE_parser, 17477); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  variable[19] /*ptypenode10*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 17495, LOCATE_parser___ReduceAction328___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction328].i]) return;
-  return_label689: while(false);
-  init_table[VAL2OBJ( self)->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, 17499, LOCATE_parser___ReduceAction329___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction329___action, LOCATE_parser, 17510); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction329___action, LOCATE_parser, 17512); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction329___action, LOCATE_parser, 17514); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction329___action, LOCATE_parser, 17516); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  variable[18] = TAG_Bool(( variable[17] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode10*/, 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___ReduceAction329___action, LOCATE_parser, 17520); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[16] =  variable[17] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[17] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode11*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 17545, LOCATE_parser___ReduceAction329___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction329].i]) return;
-  return_label691: while(false);
-  init_table[VAL2OBJ( self)->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, 17549, LOCATE_parser___ReduceAction330___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction330___action, LOCATE_parser, 17561); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction330___action, LOCATE_parser, 17563); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction330___action, LOCATE_parser, 17565); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction330___action, LOCATE_parser, 17567); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction330___action, LOCATE_parser, 17571); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode11*/, 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___ReduceAction330___action, LOCATE_parser, 17580); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[19] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode12*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 17605, LOCATE_parser___ReduceAction330___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction330].i]) return;
-  return_label693: while(false);
-  init_table[VAL2OBJ( self)->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, 17609, LOCATE_parser___ReduceAction331___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction331___action, LOCATE_parser, 17621); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction331___action, LOCATE_parser, 17623); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction331___action, LOCATE_parser, 17625); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction331___action, LOCATE_parser, 17627); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction331___action, LOCATE_parser, 17631); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction331___action, LOCATE_parser, 17633); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 17658, LOCATE_parser___ReduceAction331___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction331].i]) return;
-  return_label695: while(false);
-  init_table[VAL2OBJ( self)->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, 17662, LOCATE_parser___ReduceAction332___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction332___action, LOCATE_parser, 17675); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction332___action, LOCATE_parser, 17677); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction332___action, LOCATE_parser, 17679); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction332___action, LOCATE_parser, 17681); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction332___action, LOCATE_parser, 17685); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction332___action, LOCATE_parser, 17694); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction332___action, LOCATE_parser, 17696); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[18] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 17721, LOCATE_parser___ReduceAction332___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction332].i]) return;
-  return_label697: while(false);
-  init_table[VAL2OBJ( self)->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, 17725, LOCATE_parser___ReduceAction333___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction333___action, LOCATE_parser, 17736); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction333___action, LOCATE_parser, 17738); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction333___action, LOCATE_parser, 17740); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction333___action, LOCATE_parser, 17742); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction333___action, LOCATE_parser, 17744); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[18] = variable[19];
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 17764, LOCATE_parser___ReduceAction333___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction333].i]) return;
-  return_label699: while(false);
-  init_table[VAL2OBJ( self)->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, 17768, LOCATE_parser___ReduceAction334___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction334___action, LOCATE_parser, 17780); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction334___action, LOCATE_parser, 17782); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction334___action, LOCATE_parser, 17784); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction334___action, LOCATE_parser, 17786); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction334___action, LOCATE_parser, 17788); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction334___action, LOCATE_parser, 17792); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 17817, LOCATE_parser___ReduceAction334___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction334].i]) return;
-  return_label701: while(false);
-  init_table[VAL2OBJ( self)->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, 17821, LOCATE_parser___ReduceAction335___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction335___action, LOCATE_parser, 17833); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction335___action, LOCATE_parser, 17835); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction335___action, LOCATE_parser, 17837); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction335___action, LOCATE_parser, 17839); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction335___action, LOCATE_parser, 17841); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction335___action, LOCATE_parser, 17845); nit_exit(1);}
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 17863, LOCATE_parser___ReduceAction335___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction335].i]) return;
-  return_label703: while(false);
-  init_table[VAL2OBJ( self)->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, 17867, LOCATE_parser___ReduceAction336___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction336___action, LOCATE_parser, 17880); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction336___action, LOCATE_parser, 17882); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction336___action, LOCATE_parser, 17884); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction336___action, LOCATE_parser, 17886); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction336___action, LOCATE_parser, 17888); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction336___action, LOCATE_parser, 17892); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction336___action, LOCATE_parser, 17901); nit_exit(1);}
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 17919, LOCATE_parser___ReduceAction336___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction336].i]) return;
-  return_label705: while(false);
-  init_table[VAL2OBJ( self)->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, 17923, LOCATE_parser___ReduceAction337___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction337___action, LOCATE_parser, 17935); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction337___action, LOCATE_parser, 17937); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction337___action, LOCATE_parser, 17939); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction337___action, LOCATE_parser, 17941); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction337___action, LOCATE_parser, 17943); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  variable[20] = TAG_Bool(( variable[19] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode10*/, 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___ReduceAction337___action, LOCATE_parser, 17947); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[18] =  variable[19] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[19] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[20] = variable[21];
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[20] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 17972, LOCATE_parser___ReduceAction337___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction337].i]) return;
-  return_label707: while(false);
-  init_table[VAL2OBJ( self)->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, 17976, LOCATE_parser___ReduceAction338___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction338___action, LOCATE_parser, 17989); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction338___action, LOCATE_parser, 17991); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction338___action, LOCATE_parser, 17993); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction338___action, LOCATE_parser, 17995); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction338___action, LOCATE_parser, 17997); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction338___action, LOCATE_parser, 18001); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode11*/, 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___ReduceAction338___action, LOCATE_parser, 18010); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[21] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18035, LOCATE_parser___ReduceAction338___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction338].i]) return;
-  return_label709: while(false);
-  init_table[VAL2OBJ( self)->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, 18039, LOCATE_parser___ReduceAction339___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction339___action, LOCATE_parser, 18052); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction339___action, LOCATE_parser, 18054); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction339___action, LOCATE_parser, 18056); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction339___action, LOCATE_parser, 18058); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction339___action, LOCATE_parser, 18060); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction339___action, LOCATE_parser, 18064); nit_exit(1);}
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  variable[22] = TAG_Bool(( variable[21] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode10*/, 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___ReduceAction339___action, LOCATE_parser, 18066); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[21] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[22] = variable[23];
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[22] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18091, LOCATE_parser___ReduceAction339___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction339].i]) return;
-  return_label711: while(false);
-  init_table[VAL2OBJ( self)->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, 18095, LOCATE_parser___ReduceAction340___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction340___action, LOCATE_parser, 18109); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction340___action, LOCATE_parser, 18111); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction340___action, LOCATE_parser, 18113); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 18115); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 18117); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction340___action, LOCATE_parser, 18121); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction340___action, LOCATE_parser, 18130); nit_exit(1);}
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  variable[24] = TAG_Bool(( variable[23] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode11*/, 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___ReduceAction340___action, LOCATE_parser, 18132); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[20] =  variable[23] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[23] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[25] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[24] = variable[25];
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[24] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 18157, LOCATE_parser___ReduceAction340___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction340].i]) return;
-  return_label713: while(false);
-  init_table[VAL2OBJ( self)->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, 18161, LOCATE_parser___ReduceAction341___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction341___action, LOCATE_parser, 18172); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction341___action, LOCATE_parser, 18174); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction341___action, LOCATE_parser, 18176); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction341___action, LOCATE_parser, 18178); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 18187); nit_exit(1);}
-  variable[20] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 18200, LOCATE_parser___ReduceAction341___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction341].i]) return;
-  return_label715: while(false);
-  init_table[VAL2OBJ( self)->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, 18204, LOCATE_parser___ReduceAction342___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction342___action, LOCATE_parser, 18216); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction342___action, LOCATE_parser, 18218); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction342___action, LOCATE_parser, 18220); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction342___action, LOCATE_parser, 18222); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction342___action, LOCATE_parser, 18226); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 18240); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 18253, LOCATE_parser___ReduceAction342___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction342].i]) return;
-  return_label717: while(false);
-  init_table[VAL2OBJ( self)->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, 18257, LOCATE_parser___ReduceAction343___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction343___action, LOCATE_parser, 18269); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction343___action, LOCATE_parser, 18271); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction343___action, LOCATE_parser, 18273); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction343___action, LOCATE_parser, 18275); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction343___action, LOCATE_parser, 18279); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 18286); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 18299, LOCATE_parser___ReduceAction343___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction343].i]) return;
-  return_label719: while(false);
-  init_table[VAL2OBJ( self)->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, 18303, LOCATE_parser___ReduceAction344___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction344___action, LOCATE_parser, 18316); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction344___action, LOCATE_parser, 18318); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction344___action, LOCATE_parser, 18320); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction344___action, LOCATE_parser, 18322); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction344___action, LOCATE_parser, 18326); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction344___action, LOCATE_parser, 18335); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction344___action, LOCATE_parser, 18342); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18355, LOCATE_parser___ReduceAction344___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction344].i]) return;
-  return_label721: while(false);
-  init_table[VAL2OBJ( self)->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, 18359, LOCATE_parser___ReduceAction345___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction345___action, LOCATE_parser, 18371); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction345___action, LOCATE_parser, 18373); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction345___action, LOCATE_parser, 18375); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction345___action, LOCATE_parser, 18377); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction345___action, LOCATE_parser, 18381); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[17] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction345___action, LOCATE_parser, 18395); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 18408, LOCATE_parser___ReduceAction345___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction345].i]) return;
-  return_label723: while(false);
-  init_table[VAL2OBJ( self)->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, 18412, LOCATE_parser___ReduceAction346___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction346___action, LOCATE_parser, 18425); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction346___action, LOCATE_parser, 18427); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction346___action, LOCATE_parser, 18429); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction346___action, LOCATE_parser, 18431); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction346___action, LOCATE_parser, 18435); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction346___action, LOCATE_parser, 18444); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction346___action, LOCATE_parser, 18458); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18471, LOCATE_parser___ReduceAction346___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction346].i]) return;
-  return_label725: while(false);
-  init_table[VAL2OBJ( self)->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, 18475, LOCATE_parser___ReduceAction347___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction347___action, LOCATE_parser, 18488); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction347___action, LOCATE_parser, 18490); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction347___action, LOCATE_parser, 18492); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction347___action, LOCATE_parser, 18494); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction347___action, LOCATE_parser, 18498); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction347___action, LOCATE_parser, 18500); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction347___action, LOCATE_parser, 18514); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18527, LOCATE_parser___ReduceAction347___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction347].i]) return;
-  return_label727: while(false);
-  init_table[VAL2OBJ( self)->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, 18531, LOCATE_parser___ReduceAction348___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction348___action, LOCATE_parser, 18545); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction348___action, LOCATE_parser, 18547); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction348___action, LOCATE_parser, 18549); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction348___action, LOCATE_parser, 18551); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction348___action, LOCATE_parser, 18555); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction348___action, LOCATE_parser, 18564); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction348___action, LOCATE_parser, 18566); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[19] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 18580); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 18593, LOCATE_parser___ReduceAction348___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction348].i]) return;
-  return_label729: while(false);
-  init_table[VAL2OBJ( self)->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, 18597, LOCATE_parser___ReduceAction349___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction349___action, LOCATE_parser, 18609); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction349___action, LOCATE_parser, 18611); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction349___action, LOCATE_parser, 18613); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction349___action, LOCATE_parser, 18615); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction349___action, LOCATE_parser, 18617); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 18626); nit_exit(1);}
-  variable[22] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 18639, LOCATE_parser___ReduceAction349___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction349].i]) return;
-  return_label731: while(false);
-  init_table[VAL2OBJ( self)->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, 18643, LOCATE_parser___ReduceAction350___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction350___action, LOCATE_parser, 18656); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction350___action, LOCATE_parser, 18658); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction350___action, LOCATE_parser, 18660); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction350___action, LOCATE_parser, 18662); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction350___action, LOCATE_parser, 18664); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction350___action, LOCATE_parser, 18668); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction350___action, LOCATE_parser, 18682); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18695, LOCATE_parser___ReduceAction350___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction350].i]) return;
-  return_label733: while(false);
-  init_table[VAL2OBJ( self)->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, 18699, LOCATE_parser___ReduceAction351___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction351___action, LOCATE_parser, 18712); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction351___action, LOCATE_parser, 18714); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction351___action, LOCATE_parser, 18716); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction351___action, LOCATE_parser, 18718); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction351___action, LOCATE_parser, 18720); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction351___action, LOCATE_parser, 18724); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode11*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction351___action, LOCATE_parser, 18731); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode11*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18744, LOCATE_parser___ReduceAction351___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction351].i]) return;
-  return_label735: while(false);
-  init_table[VAL2OBJ( self)->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, 18748, LOCATE_parser___ReduceAction352___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction352___action, LOCATE_parser, 18762); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction352___action, LOCATE_parser, 18764); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction352___action, LOCATE_parser, 18766); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 18768); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 18770); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction352___action, LOCATE_parser, 18774); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction352___action, LOCATE_parser, 18783); nit_exit(1);}
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 18790); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 18803, LOCATE_parser___ReduceAction352___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction352].i]) return;
-  return_label737: while(false);
-  init_table[VAL2OBJ( self)->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, 18807, LOCATE_parser___ReduceAction353___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction353___action, LOCATE_parser, 18820); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction353___action, LOCATE_parser, 18822); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction353___action, LOCATE_parser, 18824); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction353___action, LOCATE_parser, 18826); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction353___action, LOCATE_parser, 18828); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction353___action, LOCATE_parser, 18832); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[19] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 18846); nit_exit(1);}
-  variable[24] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 18859, LOCATE_parser___ReduceAction353___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction353].i]) return;
-  return_label739: while(false);
-  init_table[VAL2OBJ( self)->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, 18863, LOCATE_parser___ReduceAction354___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction354___action, LOCATE_parser, 18877); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction354___action, LOCATE_parser, 18879); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction354___action, LOCATE_parser, 18881); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 18883); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 18885); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction354___action, LOCATE_parser, 18889); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction354___action, LOCATE_parser, 18898); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 18912); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 18925, LOCATE_parser___ReduceAction354___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction354].i]) return;
-  return_label741: while(false);
-  init_table[VAL2OBJ( self)->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, 18929, LOCATE_parser___ReduceAction355___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction355___action, LOCATE_parser, 18943); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction355___action, LOCATE_parser, 18945); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction355___action, LOCATE_parser, 18947); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 18949); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 18951); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction355___action, LOCATE_parser, 18955); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction355___action, LOCATE_parser, 18957); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*tstringnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tstringnode12*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 18971); nit_exit(1);}
-  variable[26] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*tstringnode12*/); /*new AExternMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 18984, LOCATE_parser___ReduceAction355___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction355].i]) return;
-  return_label743: while(false);
-  init_table[VAL2OBJ( self)->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, 18988, LOCATE_parser___ReduceAction356___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction356___action, LOCATE_parser, 19003); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction356___action, LOCATE_parser, 19005); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction356___action, LOCATE_parser, 19007); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 19009); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 19011); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction356___action, LOCATE_parser, 19015); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction356___action, LOCATE_parser, 19024); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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___ReduceAction356___action, LOCATE_parser, 19026); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[21] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[25] = variable[26];
-  variable[26] =  variable[4] /*nodearraylist11*/;
-  variable[27] = TAG_Bool(( variable[26] /*tstringnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*tstringnode13*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 19040); nit_exit(1);}
-  variable[28] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[25] /*psignaturenode7*/,  variable[26] /*tstringnode13*/); /*new AExternMethPropdef*/
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*ppropdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  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, 19053, LOCATE_parser___ReduceAction356___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction356].i]) return;
-  return_label745: while(false);
-  init_table[VAL2OBJ( self)->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, 19057, LOCATE_parser___ReduceAction357___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction357___action, LOCATE_parser, 19068); nit_exit(1);}
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction357___action, LOCATE_parser, 19070); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction357___action, LOCATE_parser, 19072); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction357___action, LOCATE_parser, 19074); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[15] /*listnode8*/,  NIT_NULL /*null*/,  variable[16] /*listnode10*/); /*new ASignature*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode11*/, 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___ReduceAction357___action, LOCATE_parser, 19083); nit_exit(1);}
-  variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 19096, LOCATE_parser___ReduceAction357___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction357].i]) return;
-  return_label747: while(false);
-  init_table[VAL2OBJ( self)->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, 19100, LOCATE_parser___ReduceAction358___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction358___action, LOCATE_parser, 19112); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction358___action, LOCATE_parser, 19114); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction358___action, LOCATE_parser, 19116); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction358___action, LOCATE_parser, 19118); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction358___action, LOCATE_parser, 19122); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode9*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction358___action, LOCATE_parser, 19136); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 19149, LOCATE_parser___ReduceAction358___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction358].i]) return;
-  return_label749: while(false);
-  init_table[VAL2OBJ( self)->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, 19153, LOCATE_parser___ReduceAction359___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction359___action, LOCATE_parser, 19165); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction359___action, LOCATE_parser, 19167); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction359___action, LOCATE_parser, 19169); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction359___action, LOCATE_parser, 19171); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode9*/, 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___ReduceAction359___action, LOCATE_parser, 19175); nit_exit(1);}
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  variable[18] /*ptypenode9*/,  variable[17] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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___ReduceAction359___action, LOCATE_parser, 19182); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 19195, LOCATE_parser___ReduceAction359___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction359].i]) return;
-  return_label751: while(false);
-  init_table[VAL2OBJ( self)->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, 19199, LOCATE_parser___ReduceAction360___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction360___action, LOCATE_parser, 19212); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction360___action, LOCATE_parser, 19214); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction360___action, LOCATE_parser, 19216); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction360___action, LOCATE_parser, 19218); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction360___action, LOCATE_parser, 19222); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode10*/, 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___ReduceAction360___action, LOCATE_parser, 19231); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  variable[20] /*ptypenode10*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction360___action, LOCATE_parser, 19238); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 19251, LOCATE_parser___ReduceAction360___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction360].i]) return;
-  return_label753: while(false);
-  init_table[VAL2OBJ( self)->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, 19255, LOCATE_parser___ReduceAction361___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction361___action, LOCATE_parser, 19267); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction361___action, LOCATE_parser, 19269); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction361___action, LOCATE_parser, 19271); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction361___action, LOCATE_parser, 19273); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode10*/, 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___ReduceAction361___action, LOCATE_parser, 19277); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[17] =  variable[18] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[18] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[16] /*listnode8*/,  NIT_NULL /*null*/,  variable[17] /*listnode11*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode12*/, 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___ReduceAction361___action, LOCATE_parser, 19291); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 19304, LOCATE_parser___ReduceAction361___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction361].i]) return;
-  return_label755: while(false);
-  init_table[VAL2OBJ( self)->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, 19308, LOCATE_parser___ReduceAction362___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction362___action, LOCATE_parser, 19321); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction362___action, LOCATE_parser, 19323); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction362___action, LOCATE_parser, 19325); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction362___action, LOCATE_parser, 19327); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction362___action, LOCATE_parser, 19331); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[17] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode11*/, 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___ReduceAction362___action, LOCATE_parser, 19340); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[20] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode9*/,  NIT_NULL /*null*/,  variable[18] /*listnode12*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  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___ReduceAction362___action, LOCATE_parser, 19354); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 19367, LOCATE_parser___ReduceAction362___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction362].i]) return;
-  return_label757: while(false);
-  init_table[VAL2OBJ( self)->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, 19371, LOCATE_parser___ReduceAction363___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction363___action, LOCATE_parser, 19384); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction363___action, LOCATE_parser, 19386); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction363___action, LOCATE_parser, 19388); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction363___action, LOCATE_parser, 19390); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode9*/, 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___ReduceAction363___action, LOCATE_parser, 19394); nit_exit(1);}
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction363___action, LOCATE_parser, 19396); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  variable[19] /*ptypenode9*/,  variable[18] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction363___action, LOCATE_parser, 19410); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 19423, LOCATE_parser___ReduceAction363___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction363].i]) return;
-  return_label759: while(false);
-  init_table[VAL2OBJ( self)->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, 19427, LOCATE_parser___ReduceAction364___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction364___action, LOCATE_parser, 19441); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  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___ReduceAction364___action, LOCATE_parser, 19443); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction364___action, LOCATE_parser, 19445); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction364___action, LOCATE_parser, 19447); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction364___action, LOCATE_parser, 19451); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode10*/, 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___ReduceAction364___action, LOCATE_parser, 19460); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction364___action, LOCATE_parser, 19462); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[19] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  variable[21] /*ptypenode10*/,  variable[19] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction364___action, LOCATE_parser, 19476); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 19489, LOCATE_parser___ReduceAction364___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction364].i]) return;
-  return_label761: while(false);
-  init_table[VAL2OBJ( self)->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, 19493, LOCATE_parser___ReduceAction365___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction365___action, LOCATE_parser, 19505); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  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___ReduceAction365___action, LOCATE_parser, 19507); nit_exit(1);}
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction365___action, LOCATE_parser, 19509); nit_exit(1);}
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction365___action, LOCATE_parser, 19511); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  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___ReduceAction365___action, LOCATE_parser, 19513); nit_exit(1);}
-  variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[17] = variable[18];
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[17] /*listnode8*/,  NIT_NULL /*null*/,  variable[18] /*listnode10*/); /*new ASignature*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode11*/, 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___ReduceAction365___action, LOCATE_parser, 19522); nit_exit(1);}
-  variable[22] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[19] /*psignaturenode7*/,  variable[20] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 19535, LOCATE_parser___ReduceAction365___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction365].i]) return;
-  return_label763: while(false);
-  init_table[VAL2OBJ( self)->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, 19539, LOCATE_parser___ReduceAction366___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction366___action, LOCATE_parser, 19552); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction366___action, LOCATE_parser, 19554); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction366___action, LOCATE_parser, 19556); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction366___action, LOCATE_parser, 19558); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction366___action, LOCATE_parser, 19560); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode8*/, 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___ReduceAction366___action, LOCATE_parser, 19564); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[18] =  variable[20] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode9*/,  variable[20] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode9*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction366___action, LOCATE_parser, 19578); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 19591, LOCATE_parser___ReduceAction366___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction366].i]) return;
-  return_label765: while(false);
-  init_table[VAL2OBJ( self)->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, 19595, LOCATE_parser___ReduceAction367___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction367___action, LOCATE_parser, 19608); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction367___action, LOCATE_parser, 19610); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction367___action, LOCATE_parser, 19612); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction367___action, LOCATE_parser, 19614); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction367___action, LOCATE_parser, 19616); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode9*/, 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___ReduceAction367___action, LOCATE_parser, 19620); nit_exit(1);}
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  variable[20] /*ptypenode9*/,  variable[19] /*listnode10*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode11*/, 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___ReduceAction367___action, LOCATE_parser, 19627); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode11*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 19640, LOCATE_parser___ReduceAction367___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction367].i]) return;
-  return_label767: while(false);
-  init_table[VAL2OBJ( self)->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, 19644, LOCATE_parser___ReduceAction368___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction368___action, LOCATE_parser, 19658); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction368___action, LOCATE_parser, 19660); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction368___action, LOCATE_parser, 19662); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction368___action, LOCATE_parser, 19664); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction368___action, LOCATE_parser, 19666); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction368___action, LOCATE_parser, 19670); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode10*/, 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___ReduceAction368___action, LOCATE_parser, 19679); nit_exit(1);}
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  variable[22] /*ptypenode10*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction368___action, LOCATE_parser, 19686); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 19699, LOCATE_parser___ReduceAction368___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction368].i]) return;
-  return_label769: while(false);
-  init_table[VAL2OBJ( self)->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, 19703, LOCATE_parser___ReduceAction369___action};
-  val_t variable[25];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction369___action, LOCATE_parser, 19716); nit_exit(1);}
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  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___ReduceAction369___action, LOCATE_parser, 19718); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction369___action, LOCATE_parser, 19720); nit_exit(1);}
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  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___ReduceAction369___action, LOCATE_parser, 19722); nit_exit(1);}
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  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___ReduceAction369___action, LOCATE_parser, 19724); nit_exit(1);}
-  variable[19] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[18] = variable[19];
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  variable[21] = TAG_Bool(( variable[20] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode10*/, 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___ReduceAction369___action, LOCATE_parser, 19728); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[19] =  variable[20] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode11*/,  variable[20] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[18] /*listnode8*/,  NIT_NULL /*null*/,  variable[19] /*listnode11*/); /*new ASignature*/
-  variable[21] = variable[22];
-  variable[22] =  variable[4] /*nodearraylist9*/;
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode12*/, 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___ReduceAction369___action, LOCATE_parser, 19742); nit_exit(1);}
-  variable[24] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[21] /*psignaturenode7*/,  variable[22] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  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, 19755, LOCATE_parser___ReduceAction369___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction369].i]) return;
-  return_label771: while(false);
-  init_table[VAL2OBJ( self)->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, 19759, LOCATE_parser___ReduceAction370___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction370___action, LOCATE_parser, 19773); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction370___action, LOCATE_parser, 19775); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction370___action, LOCATE_parser, 19777); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction370___action, LOCATE_parser, 19779); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction370___action, LOCATE_parser, 19781); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  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___ReduceAction370___action, LOCATE_parser, 19785); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[19] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  variable[23] = TAG_Bool(( variable[22] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode11*/, 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___ReduceAction370___action, LOCATE_parser, 19794); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode12*/,  variable[22] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode9*/,  NIT_NULL /*null*/,  variable[20] /*listnode12*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction370___action, LOCATE_parser, 19808); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 19821, LOCATE_parser___ReduceAction370___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction370].i]) return;
-  return_label773: while(false);
-  init_table[VAL2OBJ( self)->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, 19825, LOCATE_parser___ReduceAction371___action};
-  val_t variable[27];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction371___action, LOCATE_parser, 19839); nit_exit(1);}
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode3*/, 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___ReduceAction371___action, LOCATE_parser, 19841); nit_exit(1);}
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction371___action, LOCATE_parser, 19843); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist4*/;
-  variable[18] = TAG_Bool(( variable[17] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 19845); nit_exit(1);}
-  variable[18] =  variable[9] /*nodearraylist5*/;
-  variable[19] = TAG_Bool(( variable[18] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 19847); nit_exit(1);}
-  variable[20] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[19] = variable[20];
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode9*/, 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___ReduceAction371___action, LOCATE_parser, 19851); nit_exit(1);}
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction371___action, LOCATE_parser, 19853); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode11*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[24] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[19] /*listnode8*/,  variable[21] /*ptypenode9*/,  variable[20] /*listnode11*/); /*new ASignature*/
-  variable[23] = variable[24];
-  variable[24] =  variable[4] /*nodearraylist10*/;
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode12*/, 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___ReduceAction371___action, LOCATE_parser, 19867); nit_exit(1);}
-  variable[26] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[14] /*pdocnode2*/,  variable[15] /*tkwredefnode3*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*tkwmethnode5*/,  variable[18] /*pmethidnode6*/,  variable[23] /*psignaturenode7*/,  variable[24] /*pexprnode12*/); /*new AConcreteMethPropdef*/
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  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, 19880, LOCATE_parser___ReduceAction371___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction371].i]) return;
-  return_label775: while(false);
-  init_table[VAL2OBJ( self)->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, 19884, LOCATE_parser___ReduceAction372___action};
-  val_t variable[29];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction372___action, LOCATE_parser, 19899); nit_exit(1);}
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  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___ReduceAction372___action, LOCATE_parser, 19901); nit_exit(1);}
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction372___action, LOCATE_parser, 19903); nit_exit(1);}
-  variable[18] =  variable[11] /*nodearraylist4*/;
-  variable[19] = TAG_Bool(( variable[18] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 19905); nit_exit(1);}
-  variable[19] =  variable[10] /*nodearraylist5*/;
-  variable[20] = TAG_Bool(( variable[19] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 19907); nit_exit(1);}
-  variable[21] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[20] = variable[21];
-  variable[22] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[21] = variable[22];
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  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___ReduceAction372___action, LOCATE_parser, 19911); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[20] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[20] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[20] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[20] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode10*/, 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___ReduceAction372___action, LOCATE_parser, 19920); nit_exit(1);}
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  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___ReduceAction372___action, LOCATE_parser, 19922); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[21] /*listnode12*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[21] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[21] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[21] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[26] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[20] /*listnode9*/,  variable[23] /*ptypenode10*/,  variable[21] /*listnode12*/); /*new ASignature*/
-  variable[25] = variable[26];
-  variable[26] =  variable[4] /*nodearraylist11*/;
-  variable[27] = TAG_Bool(( variable[26] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 19936); nit_exit(1);}
-  variable[28] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*tkwmethnode5*/,  variable[19] /*pmethidnode6*/,  variable[25] /*psignaturenode7*/,  variable[26] /*pexprnode13*/); /*new AConcreteMethPropdef*/
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*ppropdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  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, 19949, LOCATE_parser___ReduceAction372___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction372].i]) return;
-  return_label777: while(false);
-  init_table[VAL2OBJ( self)->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, 19953, LOCATE_parser___ReduceAction373___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility(); /*new APublicVisibility*/
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*pvisibilitynode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 19961, LOCATE_parser___ReduceAction373___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction373].i]) return;
-  return_label779: while(false);
-  init_table[VAL2OBJ( self)->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, 19965, LOCATE_parser___ReduceAction374___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction374___action, LOCATE_parser, 19971); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 19978, LOCATE_parser___ReduceAction374___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction374].i]) return;
-  return_label781: while(false);
-  init_table[VAL2OBJ( self)->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, 19982, LOCATE_parser___ReduceAction375___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction375___action, LOCATE_parser, 19988); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 19995, LOCATE_parser___ReduceAction375___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction375].i]) return;
-  return_label783: while(false);
-  init_table[VAL2OBJ( self)->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, 19999, LOCATE_parser___ReduceAction376___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction376___action, LOCATE_parser, 20005); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 20012, LOCATE_parser___ReduceAction376___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction376].i]) return;
-  return_label785: while(false);
-  init_table[VAL2OBJ( self)->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, 20016, LOCATE_parser___ReduceAction377___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction377___action, LOCATE_parser, 20021); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20028, LOCATE_parser___ReduceAction377___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction377].i]) return;
-  return_label787: while(false);
-  init_table[VAL2OBJ( self)->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, 20032, LOCATE_parser___ReduceAction378___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction378___action, LOCATE_parser, 20037); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20044, LOCATE_parser___ReduceAction378___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction378].i]) return;
-  return_label789: while(false);
-  init_table[VAL2OBJ( self)->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, 20048, LOCATE_parser___ReduceAction379___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction379___action, LOCATE_parser, 20053); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20060, LOCATE_parser___ReduceAction379___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction379].i]) return;
-  return_label791: while(false);
-  init_table[VAL2OBJ( self)->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, 20064, LOCATE_parser___ReduceAction380___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction380___action, LOCATE_parser, 20069); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20076, LOCATE_parser___ReduceAction380___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction380].i]) return;
-  return_label793: while(false);
-  init_table[VAL2OBJ( self)->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, 20080, LOCATE_parser___ReduceAction381___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction381___action, LOCATE_parser, 20085); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20092, LOCATE_parser___ReduceAction381___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction381].i]) return;
-  return_label795: while(false);
-  init_table[VAL2OBJ( self)->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, 20096, LOCATE_parser___ReduceAction382___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction382___action, LOCATE_parser, 20101); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20108, LOCATE_parser___ReduceAction382___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction382].i]) return;
-  return_label797: while(false);
-  init_table[VAL2OBJ( self)->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, 20112, LOCATE_parser___ReduceAction383___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction383___action, LOCATE_parser, 20117); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20124, LOCATE_parser___ReduceAction383___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction383].i]) return;
-  return_label799: while(false);
-  init_table[VAL2OBJ( self)->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, 20128, LOCATE_parser___ReduceAction384___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction384___action, LOCATE_parser, 20133); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20140, LOCATE_parser___ReduceAction384___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction384].i]) return;
-  return_label801: while(false);
-  init_table[VAL2OBJ( self)->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, 20144, LOCATE_parser___ReduceAction385___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction385___action, LOCATE_parser, 20149); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20156, LOCATE_parser___ReduceAction385___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction385].i]) return;
-  return_label803: while(false);
-  init_table[VAL2OBJ( self)->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, 20160, LOCATE_parser___ReduceAction386___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction386___action, LOCATE_parser, 20165); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20172, LOCATE_parser___ReduceAction386___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction386].i]) return;
-  return_label805: while(false);
-  init_table[VAL2OBJ( self)->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, 20176, LOCATE_parser___ReduceAction387___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction387___action, LOCATE_parser, 20181); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20188, LOCATE_parser___ReduceAction387___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction387].i]) return;
-  return_label807: while(false);
-  init_table[VAL2OBJ( self)->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, 20192, LOCATE_parser___ReduceAction388___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction388___action, LOCATE_parser, 20197); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20204, LOCATE_parser___ReduceAction388___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction388].i]) return;
-  return_label809: while(false);
-  init_table[VAL2OBJ( self)->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, 20208, LOCATE_parser___ReduceAction389___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction389___action, LOCATE_parser, 20214); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction389___action, LOCATE_parser, 20216); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20224, LOCATE_parser___ReduceAction389___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction389].i]) return;
-  return_label811: while(false);
-  init_table[VAL2OBJ( self)->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, 20228, LOCATE_parser___ReduceAction390___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction390___action, LOCATE_parser, 20233); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20240, LOCATE_parser___ReduceAction390___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction390].i]) return;
-  return_label813: while(false);
-  init_table[VAL2OBJ( self)->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, 20244, LOCATE_parser___ReduceAction391___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction391___action, LOCATE_parser, 20250); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction391___action, LOCATE_parser, 20252); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20260, LOCATE_parser___ReduceAction391___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction391].i]) return;
-  return_label815: while(false);
-  init_table[VAL2OBJ( self)->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, 20264, LOCATE_parser___ReduceAction392___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction392___action, LOCATE_parser, 20271); nit_exit(1);}
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction392___action, LOCATE_parser, 20273); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction392___action, LOCATE_parser, 20275); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 20284, LOCATE_parser___ReduceAction392___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction392].i]) return;
-  return_label817: while(false);
-  init_table[VAL2OBJ( self)->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, 20288, LOCATE_parser___ReduceAction393___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20301, LOCATE_parser___ReduceAction393___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction393].i]) return;
-  return_label819: while(false);
-  init_table[VAL2OBJ( self)->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, 20305, LOCATE_parser___ReduceAction394___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction394___action, LOCATE_parser, 20312); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[5] =  variable[7] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20328, LOCATE_parser___ReduceAction394___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction394].i]) return;
-  return_label821: while(false);
-  init_table[VAL2OBJ( self)->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, 20332, LOCATE_parser___ReduceAction395___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction395___action, LOCATE_parser, 20339); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20348, LOCATE_parser___ReduceAction395___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction395].i]) return;
-  return_label823: while(false);
-  init_table[VAL2OBJ( self)->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, 20352, LOCATE_parser___ReduceAction396___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction396___action, LOCATE_parser, 20360); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction396___action, LOCATE_parser, 20369); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 20378, LOCATE_parser___ReduceAction396___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction396].i]) return;
-  return_label825: while(false);
-  init_table[VAL2OBJ( self)->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, 20382, LOCATE_parser___ReduceAction397___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction397___action, LOCATE_parser, 20392); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pparamnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 20399, LOCATE_parser___ReduceAction397___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction397].i]) return;
-  return_label827: while(false);
-  init_table[VAL2OBJ( self)->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, 20403, LOCATE_parser___ReduceAction398___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction398___action, LOCATE_parser, 20414); nit_exit(1);}
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction398___action, LOCATE_parser, 20416); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pparamnode1*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 20430, LOCATE_parser___ReduceAction398___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction398].i]) return;
-  return_label829: while(false);
-  init_table[VAL2OBJ( self)->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, 20434, LOCATE_parser___ReduceAction399___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 20444, LOCATE_parser___ReduceAction399___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction399].i]) return;
-  return_label831: while(false);
-  init_table[VAL2OBJ( self)->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, 20448, LOCATE_parser___ReduceAction400___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction400___action, LOCATE_parser, 20455); nit_exit(1);}
-  variable[3] =  variable[7] /*pparamnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 20459, LOCATE_parser___ReduceAction400___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction400].i]) return;
-  return_label833: while(false);
-  init_table[VAL2OBJ( self)->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, 20463, LOCATE_parser___ReduceAction401___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction401___action, LOCATE_parser, 20468); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(20)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20477, LOCATE_parser___ReduceAction401___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction401].i]) return;
-  return_label835: while(false);
-  init_table[VAL2OBJ( self)->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, 20481, LOCATE_parser___ReduceAction402___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction402___action, LOCATE_parser, 20487); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction402___action, LOCATE_parser, 20489); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(20)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20498, LOCATE_parser___ReduceAction402___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction402].i]) return;
-  return_label837: while(false);
-  init_table[VAL2OBJ( self)->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, 20502, LOCATE_parser___ReduceAction403___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction403___action, LOCATE_parser, 20509); nit_exit(1);}
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction403___action, LOCATE_parser, 20511); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction403___action, LOCATE_parser, 20513); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(20)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 20522, LOCATE_parser___ReduceAction403___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction403].i]) return;
-  return_label839: while(false);
-  init_table[VAL2OBJ( self)->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, 20526, LOCATE_parser___ReduceAction404___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction404___action, LOCATE_parser, 20535); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction404___action, LOCATE_parser, 20537); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction404___action, LOCATE_parser, 20539); nit_exit(1);}
-  variable[13] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[9] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[10] /*tidnode4*/,  variable[11] /*psignaturenode5*/); /*new AClosureDecl*/
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 20549, LOCATE_parser___ReduceAction404___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction404].i]) return;
-  return_label841: while(false);
-  init_table[VAL2OBJ( self)->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, 20553, LOCATE_parser___ReduceAction405___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction405___action, LOCATE_parser, 20563); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction405___action, LOCATE_parser, 20565); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction405___action, LOCATE_parser, 20567); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction405___action, LOCATE_parser, 20569); nit_exit(1);}
-  variable[15] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[10] /*tkwwithnode2*/,  variable[11] /*tkwbreaknode3*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/); /*new AClosureDecl*/
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 20579, LOCATE_parser___ReduceAction405___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction405].i]) return;
-  return_label843: while(false);
-  init_table[VAL2OBJ( self)->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, 20583, LOCATE_parser___ReduceAction406___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction406___action, LOCATE_parser, 20589); nit_exit(1);}
-  variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 20597, LOCATE_parser___ReduceAction406___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction406].i]) return;
-  return_label845: while(false);
-  init_table[VAL2OBJ( self)->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, 20601, LOCATE_parser___ReduceAction407___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  variable[12] = TAG_Bool(( variable[11] /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tclassidnode2*/, 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___ReduceAction407___action, LOCATE_parser, 20612); nit_exit(1);}
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction407___action, LOCATE_parser, 20614); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] = NEW_AType_parser_prod___AType___init_atype( variable[11] /*tclassidnode2*/,  variable[10] /*listnode4*/); /*new AType*/
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*ptypenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 20629, LOCATE_parser___ReduceAction407___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction407].i]) return;
-  return_label847: while(false);
-  init_table[VAL2OBJ( self)->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, 20633, LOCATE_parser___ReduceAction408___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction408___action, LOCATE_parser, 20639); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20646, LOCATE_parser___ReduceAction408___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction408].i]) return;
-  return_label849: while(false);
-  init_table[VAL2OBJ( self)->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, 20650, LOCATE_parser___ReduceAction409___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction409___action, LOCATE_parser, 20657); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction409___action, LOCATE_parser, 20659); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[7] /*ptypenode1*/) /*AbstractArray::add*/;
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20673, LOCATE_parser___ReduceAction409___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction409].i]) return;
-  return_label851: while(false);
-  init_table[VAL2OBJ( self)->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, 20677, LOCATE_parser___ReduceAction410___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction410___action, LOCATE_parser, 20684); nit_exit(1);}
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 20688, LOCATE_parser___ReduceAction410___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction410].i]) return;
-  return_label853: while(false);
-  init_table[VAL2OBJ( self)->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, 20692, LOCATE_parser___ReduceAction411___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction411___action, LOCATE_parser, 20699); nit_exit(1);}
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 20703, LOCATE_parser___ReduceAction411___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction411].i]) return;
-  return_label855: while(false);
-  init_table[VAL2OBJ( self)->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, 20707, LOCATE_parser___ReduceAction412___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction412___action, LOCATE_parser, 20712); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 20716, LOCATE_parser___ReduceAction412___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction412].i]) return;
-  return_label857: while(false);
-  init_table[VAL2OBJ( self)->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, 20720, LOCATE_parser___ReduceAction413___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction413___action, LOCATE_parser, 20729); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 20739, LOCATE_parser___ReduceAction413___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction413].i]) return;
-  return_label859: while(false);
-  init_table[VAL2OBJ( self)->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, 20743, LOCATE_parser___ReduceAction414___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction414___action, LOCATE_parser, 20753); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction414___action, LOCATE_parser, 20755); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 20772, LOCATE_parser___ReduceAction414___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction414].i]) return;
-  return_label861: while(false);
-  init_table[VAL2OBJ( self)->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, 20776, LOCATE_parser___ReduceAction415___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 20784, LOCATE_parser___ReduceAction415___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction415].i]) return;
-  return_label863: while(false);
-  init_table[VAL2OBJ( self)->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, 20788, LOCATE_parser___ReduceAction416___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 20795, LOCATE_parser___ReduceAction416___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction416].i]) return;
-  return_label865: while(false);
-  init_table[VAL2OBJ( self)->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, 20799, LOCATE_parser___ReduceAction417___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction417___action, LOCATE_parser, 20805); nit_exit(1);}
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20809, LOCATE_parser___ReduceAction417___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction417].i]) return;
-  return_label867: while(false);
-  init_table[VAL2OBJ( self)->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, 20813, LOCATE_parser___ReduceAction418___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction418___action, LOCATE_parser, 20818); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 20822, LOCATE_parser___ReduceAction418___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction418].i]) return;
-  return_label869: while(false);
-  init_table[VAL2OBJ( self)->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, 20826, LOCATE_parser___ReduceAction419___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction419___action, LOCATE_parser, 20831); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 20835, LOCATE_parser___ReduceAction419___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction419].i]) return;
-  return_label871: while(false);
-  init_table[VAL2OBJ( self)->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, 20839, LOCATE_parser___ReduceAction420___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction420___action, LOCATE_parser, 20844); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20852, LOCATE_parser___ReduceAction420___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction420].i]) return;
-  return_label873: while(false);
-  init_table[VAL2OBJ( self)->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, 20856, LOCATE_parser___ReduceAction421___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction421___action, LOCATE_parser, 20862); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction421___action, LOCATE_parser, 20864); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20872, LOCATE_parser___ReduceAction421___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction421].i]) return;
-  return_label875: while(false);
-  init_table[VAL2OBJ( self)->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, 20876, LOCATE_parser___ReduceAction422___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction422___action, LOCATE_parser, 20881); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 20889, LOCATE_parser___ReduceAction422___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction422].i]) return;
-  return_label877: while(false);
-  init_table[VAL2OBJ( self)->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, 20893, LOCATE_parser___ReduceAction423___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction423___action, LOCATE_parser, 20899); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction423___action, LOCATE_parser, 20901); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20909, LOCATE_parser___ReduceAction423___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction423].i]) return;
-  return_label879: while(false);
-  init_table[VAL2OBJ( self)->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, 20913, LOCATE_parser___ReduceAction424___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction424___action, LOCATE_parser, 20918); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 20925, LOCATE_parser___ReduceAction424___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction424].i]) return;
-  return_label881: while(false);
-  init_table[VAL2OBJ( self)->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, 20929, LOCATE_parser___ReduceAction425___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction425___action, LOCATE_parser, 20934); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 20942, LOCATE_parser___ReduceAction425___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction425].i]) return;
-  return_label883: while(false);
-  init_table[VAL2OBJ( self)->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, 20946, LOCATE_parser___ReduceAction426___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction426___action, LOCATE_parser, 20952); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction426___action, LOCATE_parser, 20954); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 20962, LOCATE_parser___ReduceAction426___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction426].i]) return;
-  return_label885: while(false);
-  init_table[VAL2OBJ( self)->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, 20966, LOCATE_parser___ReduceAction427___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction427___action, LOCATE_parser, 20971); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 20975, LOCATE_parser___ReduceAction427___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction427].i]) return;
-  return_label887: while(false);
-  init_table[VAL2OBJ( self)->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, 20979, LOCATE_parser___ReduceAction428___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction428___action, LOCATE_parser, 20984); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 20988, LOCATE_parser___ReduceAction428___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction428].i]) return;
-  return_label889: while(false);
-  init_table[VAL2OBJ( self)->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, 20992, LOCATE_parser___ReduceAction429___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction429___action, LOCATE_parser, 20997); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 21001, LOCATE_parser___ReduceAction429___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction429].i]) return;
-  return_label891: while(false);
-  init_table[VAL2OBJ( self)->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, 21005, LOCATE_parser___ReduceAction430___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction430___action, LOCATE_parser, 21010); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 21014, LOCATE_parser___ReduceAction430___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction430].i]) return;
-  return_label893: while(false);
-  init_table[VAL2OBJ( self)->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, 21018, LOCATE_parser___ReduceAction431___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction431___action, LOCATE_parser, 21023); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 21027, LOCATE_parser___ReduceAction431___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction431].i]) return;
-  return_label895: while(false);
-  init_table[VAL2OBJ( self)->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, 21031, LOCATE_parser___ReduceAction432___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction432___action, LOCATE_parser, 21042); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction432___action, LOCATE_parser, 21044); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction432___action, LOCATE_parser, 21046); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 21063, LOCATE_parser___ReduceAction432___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction432].i]) return;
-  return_label897: while(false);
-  init_table[VAL2OBJ( self)->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, 21067, LOCATE_parser___ReduceAction433___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[8] = variable[9];
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction433___action, LOCATE_parser, 21077); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction433___action, LOCATE_parser, 21079); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 21096, LOCATE_parser___ReduceAction433___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction433].i]) return;
-  return_label899: while(false);
-  init_table[VAL2OBJ( self)->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, 21100, LOCATE_parser___ReduceAction434___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction434___action, LOCATE_parser, 21112); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction434___action, LOCATE_parser, 21114); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction434___action, LOCATE_parser, 21116); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction434___action, LOCATE_parser, 21125); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 21142, LOCATE_parser___ReduceAction434___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction434].i]) return;
-  return_label901: while(false);
-  init_table[VAL2OBJ( self)->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, 21146, LOCATE_parser___ReduceAction435___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction435___action, LOCATE_parser, 21157); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction435___action, LOCATE_parser, 21159); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction435___action, LOCATE_parser, 21168); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 21185, LOCATE_parser___ReduceAction435___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction435].i]) return;
-  return_label903: while(false);
-  init_table[VAL2OBJ( self)->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, 21189, LOCATE_parser___ReduceAction436___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction436___action, LOCATE_parser, 21196); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction436___action, LOCATE_parser, 21198); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 21214, LOCATE_parser___ReduceAction436___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction436].i]) return;
-  return_label905: while(false);
-  init_table[VAL2OBJ( self)->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, 21218, LOCATE_parser___ReduceAction437___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction437___action, LOCATE_parser, 21226); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction437___action, LOCATE_parser, 21228); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction437___action, LOCATE_parser, 21230); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 21246, LOCATE_parser___ReduceAction437___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction437].i]) return;
-  return_label907: while(false);
-  init_table[VAL2OBJ( self)->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, 21250, LOCATE_parser___ReduceAction438___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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, 21260); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction438___action, LOCATE_parser, 21262); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction438___action, LOCATE_parser, 21264); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 21280, LOCATE_parser___ReduceAction438___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction438].i]) return;
-  return_label909: while(false);
-  init_table[VAL2OBJ( self)->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, 21284, LOCATE_parser___ReduceAction439___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction439___action, LOCATE_parser, 21293); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction439___action, LOCATE_parser, 21295); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 21311, LOCATE_parser___ReduceAction439___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction439].i]) return;
-  return_label911: while(false);
-  init_table[VAL2OBJ( self)->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, 21315, LOCATE_parser___ReduceAction440___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction440___action, LOCATE_parser, 21321); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(29)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 21328, LOCATE_parser___ReduceAction440___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction440].i]) return;
-  return_label913: while(false);
-  init_table[VAL2OBJ( self)->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, 21332, LOCATE_parser___ReduceAction441___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction441___action, LOCATE_parser, 21339); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction441___action, LOCATE_parser, 21341); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(29)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 21355, LOCATE_parser___ReduceAction441___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction441].i]) return;
-  return_label915: while(false);
-  init_table[VAL2OBJ( self)->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, 21359, LOCATE_parser___ReduceAction442___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction442___action, LOCATE_parser, 21367); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction442___action, LOCATE_parser, 21369); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction442___action, LOCATE_parser, 21371); nit_exit(1);}
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 21381, LOCATE_parser___ReduceAction442___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction442].i]) return;
-  return_label917: while(false);
-  init_table[VAL2OBJ( self)->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, 21385, LOCATE_parser___ReduceAction443___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction443___action, LOCATE_parser, 21394); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction443___action, LOCATE_parser, 21396); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction443___action, LOCATE_parser, 21405); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction443___action, LOCATE_parser, 21407); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 21417, LOCATE_parser___ReduceAction443___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction443].i]) return;
-  return_label919: while(false);
-  init_table[VAL2OBJ( self)->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, 21421, LOCATE_parser___ReduceAction444___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction444___action, LOCATE_parser, 21431); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction444___action, LOCATE_parser, 21433); nit_exit(1);}
-  variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[12] = variable[13];
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction444___action, LOCATE_parser, 21436); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pexprnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*pexprnode6*/) /*AbstractArray::add*/;
-  }
-  variable[15] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[12] /*listnode7*/); /*new ABlockExpr*/
-  variable[14] = variable[15];
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 21452, LOCATE_parser___ReduceAction444___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction444].i]) return;
-  return_label921: while(false);
-  init_table[VAL2OBJ( self)->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, 21456, LOCATE_parser___ReduceAction445___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction445___action, LOCATE_parser, 21467); nit_exit(1);}
-  variable[12] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction445___action, LOCATE_parser, 21469); nit_exit(1);}
-  variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[13] = variable[14];
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction445___action, LOCATE_parser, 21472); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction445___action, LOCATE_parser, 21474); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pexprnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*pexprnode6*/) /*AbstractArray::add*/;
-  }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[17] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[13] /*listnode8*/); /*new ABlockExpr*/
-  variable[16] = variable[17];
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 21497, LOCATE_parser___ReduceAction445___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction445].i]) return;
-  return_label923: while(false);
-  init_table[VAL2OBJ( self)->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, 21501, LOCATE_parser___ReduceAction446___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction446___action, LOCATE_parser, 21512); nit_exit(1);}
-  variable[12] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction446___action, LOCATE_parser, 21514); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction446___action, LOCATE_parser, 21523); nit_exit(1);}
-  variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[14] = variable[15];
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction446___action, LOCATE_parser, 21526); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pexprnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*pexprnode7*/) /*AbstractArray::add*/;
-  }
-  variable[17] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[14] /*listnode8*/); /*new ABlockExpr*/
-  variable[16] = variable[17];
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 21542, LOCATE_parser___ReduceAction446___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction446].i]) return;
-  return_label925: while(false);
-  init_table[VAL2OBJ( self)->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, 21546, LOCATE_parser___ReduceAction447___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction447___action, LOCATE_parser, 21558); nit_exit(1);}
-  variable[13] =  variable[9] /*nodearraylist2*/;
-  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___ReduceAction447___action, LOCATE_parser, 21560); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction447___action, LOCATE_parser, 21569); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction447___action, LOCATE_parser, 21572); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction447___action, LOCATE_parser, 21574); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode9*/,  variable[16] /*pexprnode7*/) /*AbstractArray::add*/;
-  }
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[19] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[15] /*listnode9*/); /*new ABlockExpr*/
-  variable[18] = variable[19];
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 21597, LOCATE_parser___ReduceAction447___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction447].i]) return;
-  return_label927: while(false);
-  init_table[VAL2OBJ( self)->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, 21601, LOCATE_parser___ReduceAction448___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction448___action, LOCATE_parser, 21609); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction448___action, LOCATE_parser, 21611); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 21621, LOCATE_parser___ReduceAction448___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction448].i]) return;
-  return_label929: while(false);
-  init_table[VAL2OBJ( self)->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, 21625, LOCATE_parser___ReduceAction449___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction449___action, LOCATE_parser, 21634); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction449___action, LOCATE_parser, 21636); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction449___action, LOCATE_parser, 21645); nit_exit(1);}
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 21655, LOCATE_parser___ReduceAction449___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction449].i]) return;
-  return_label931: while(false);
-  init_table[VAL2OBJ( self)->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, 21659, LOCATE_parser___ReduceAction450___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction450___action, LOCATE_parser, 21665); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction450___action, LOCATE_parser, 21667); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 21678, LOCATE_parser___ReduceAction450___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction450].i]) return;
-  return_label933: while(false);
-  init_table[VAL2OBJ( self)->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, 21682, LOCATE_parser___ReduceAction451___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction451___action, LOCATE_parser, 21689); nit_exit(1);}
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction451___action, LOCATE_parser, 21691); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction451___action, LOCATE_parser, 21693); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 21704, LOCATE_parser___ReduceAction451___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction451].i]) return;
-  return_label935: while(false);
-  init_table[VAL2OBJ( self)->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, 21708, LOCATE_parser___ReduceAction452___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction452___action, LOCATE_parser, 21717); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction452___action, LOCATE_parser, 21719); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction452___action, LOCATE_parser, 21721); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction452___action, LOCATE_parser, 21723); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 21734, LOCATE_parser___ReduceAction452___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction452].i]) return;
-  return_label937: while(false);
-  init_table[VAL2OBJ( self)->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, 21738, LOCATE_parser___ReduceAction453___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction453___action, LOCATE_parser, 21748); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction453___action, LOCATE_parser, 21750); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction453___action, LOCATE_parser, 21752); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction453___action, LOCATE_parser, 21754); nit_exit(1);}
-  variable[14] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction453___action, LOCATE_parser, 21756); nit_exit(1);}
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 21767, LOCATE_parser___ReduceAction453___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction453].i]) return;
-  return_label939: while(false);
-  init_table[VAL2OBJ( self)->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, 21771, LOCATE_parser___ReduceAction454___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction454___action, LOCATE_parser, 21781); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction454___action, LOCATE_parser, 21783); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction454___action, LOCATE_parser, 21785); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction454___action, LOCATE_parser, 21787); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 21797, LOCATE_parser___ReduceAction454___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction454].i]) return;
-  return_label941: while(false);
-  init_table[VAL2OBJ( self)->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, 21801, LOCATE_parser___ReduceAction455___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction455___action, LOCATE_parser, 21810); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction455___action, LOCATE_parser, 21812); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction455___action, LOCATE_parser, 21814); nit_exit(1);}
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 21824, LOCATE_parser___ReduceAction455___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction455].i]) return;
-  return_label943: while(false);
-  init_table[VAL2OBJ( self)->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, 21828, LOCATE_parser___ReduceAction456___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction456___action, LOCATE_parser, 21840); nit_exit(1);}
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction456___action, LOCATE_parser, 21842); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction456___action, LOCATE_parser, 21844); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction456___action, LOCATE_parser, 21853); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction456___action, LOCATE_parser, 21855); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 21866, LOCATE_parser___ReduceAction456___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction456].i]) return;
-  return_label945: while(false);
-  init_table[VAL2OBJ( self)->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, 21870, LOCATE_parser___ReduceAction457___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction457___action, LOCATE_parser, 21881); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction457___action, LOCATE_parser, 21883); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction457___action, LOCATE_parser, 21892); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction457___action, LOCATE_parser, 21894); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 21905, LOCATE_parser___ReduceAction457___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction457].i]) return;
-  return_label947: while(false);
-  init_table[VAL2OBJ( self)->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, 21909, LOCATE_parser___ReduceAction458___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction458___action, LOCATE_parser, 21918); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction458___action, LOCATE_parser, 21920); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction458___action, LOCATE_parser, 21929); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction458___action, LOCATE_parser, 21931); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 21941, LOCATE_parser___ReduceAction458___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction458].i]) return;
-  return_label949: while(false);
-  init_table[VAL2OBJ( self)->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, 21945, LOCATE_parser___ReduceAction459___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction459___action, LOCATE_parser, 21955); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction459___action, LOCATE_parser, 21957); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction459___action, LOCATE_parser, 21959); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction459___action, LOCATE_parser, 21961); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 21971, LOCATE_parser___ReduceAction459___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction459].i]) return;
-  return_label951: while(false);
-  init_table[VAL2OBJ( self)->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, 21975, LOCATE_parser___ReduceAction460___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction460___action, LOCATE_parser, 21984); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction460___action, LOCATE_parser, 21986); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction460___action, LOCATE_parser, 21988); nit_exit(1);}
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 21998, LOCATE_parser___ReduceAction460___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction460].i]) return;
-  return_label953: while(false);
-  init_table[VAL2OBJ( self)->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, 22002, LOCATE_parser___ReduceAction461___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction461___action, LOCATE_parser, 22014); nit_exit(1);}
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction461___action, LOCATE_parser, 22016); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction461___action, LOCATE_parser, 22018); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction461___action, LOCATE_parser, 22027); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction461___action, LOCATE_parser, 22029); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 22040, LOCATE_parser___ReduceAction461___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction461].i]) return;
-  return_label955: while(false);
-  init_table[VAL2OBJ( self)->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, 22044, LOCATE_parser___ReduceAction462___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction462___action, LOCATE_parser, 22055); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction462___action, LOCATE_parser, 22057); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction462___action, LOCATE_parser, 22066); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction462___action, LOCATE_parser, 22068); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 22079, LOCATE_parser___ReduceAction462___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction462].i]) return;
-  return_label957: while(false);
-  init_table[VAL2OBJ( self)->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, 22083, LOCATE_parser___ReduceAction463___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction463___action, LOCATE_parser, 22092); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction463___action, LOCATE_parser, 22094); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction463___action, LOCATE_parser, 22103); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction463___action, LOCATE_parser, 22105); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 22115, LOCATE_parser___ReduceAction463___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction463].i]) return;
-  return_label959: while(false);
-  init_table[VAL2OBJ( self)->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, 22119, LOCATE_parser___ReduceAction464___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction464___action, LOCATE_parser, 22124); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 22131, LOCATE_parser___ReduceAction464___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction464].i]) return;
-  return_label961: while(false);
-  init_table[VAL2OBJ( self)->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, 22135, LOCATE_parser___ReduceAction465___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction465___action, LOCATE_parser, 22140); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 22147, LOCATE_parser___ReduceAction465___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction465].i]) return;
-  return_label963: while(false);
-  init_table[VAL2OBJ( self)->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, 22151, LOCATE_parser___ReduceAction466___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction466___action, LOCATE_parser, 22157); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction466___action, LOCATE_parser, 22159); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 22167, LOCATE_parser___ReduceAction466___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction466].i]) return;
-  return_label965: while(false);
-  init_table[VAL2OBJ( self)->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, 22171, LOCATE_parser___ReduceAction467___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction467___action, LOCATE_parser, 22183); nit_exit(1);}
-  variable[13] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction467___action, LOCATE_parser, 22185); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction467___action, LOCATE_parser, 22187); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist8*/;
-  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___ReduceAction467___action, LOCATE_parser, 22189); nit_exit(1);}
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 22199, LOCATE_parser___ReduceAction467___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction467].i]) return;
-  return_label967: while(false);
-  init_table[VAL2OBJ( self)->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, 22203, LOCATE_parser___ReduceAction468___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction468___action, LOCATE_parser, 22213); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction468___action, LOCATE_parser, 22215); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction468___action, LOCATE_parser, 22217); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 22227, LOCATE_parser___ReduceAction468___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction468].i]) return;
-  return_label969: while(false);
-  init_table[VAL2OBJ( self)->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, 22231, LOCATE_parser___ReduceAction469___action};
-  val_t variable[21];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  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___ReduceAction469___action, LOCATE_parser, 22244); nit_exit(1);}
-  variable[14] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction469___action, LOCATE_parser, 22246); nit_exit(1);}
-  variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[15] = variable[16];
-  variable[16] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction469___action, LOCATE_parser, 22249); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode6*/,  variable[16] /*pexprnode5*/) /*AbstractArray::add*/;
-  }
-  variable[18] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[15] /*listnode6*/); /*new ABlockExpr*/
-  variable[17] = variable[18];
-  variable[18] =  variable[4] /*nodearraylist9*/;
-  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___ReduceAction469___action, LOCATE_parser, 22257); nit_exit(1);}
-  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=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  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, 22267, LOCATE_parser___ReduceAction469___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction469].i]) return;
-  return_label971: while(false);
-  init_table[VAL2OBJ( self)->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, 22271, LOCATE_parser___ReduceAction470___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction470___action, LOCATE_parser, 22285); nit_exit(1);}
-  variable[15] =  variable[11] /*nodearraylist3*/;
-  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___ReduceAction470___action, LOCATE_parser, 22287); nit_exit(1);}
-  variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[16] = variable[17];
-  variable[17] =  variable[7] /*nodearraylist7*/;
-  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___ReduceAction470___action, LOCATE_parser, 22290); nit_exit(1);}
-  variable[18] =  variable[6] /*nodearraylist8*/;
-  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___ReduceAction470___action, LOCATE_parser, 22292); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode7*/,  variable[17] /*pexprnode5*/) /*AbstractArray::add*/;
-  }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode7*/,  variable[18] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[20] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[16] /*listnode7*/); /*new ABlockExpr*/
-  variable[19] = variable[20];
-  variable[20] =  variable[4] /*nodearraylist10*/;
-  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___ReduceAction470___action, LOCATE_parser, 22307); nit_exit(1);}
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 22317, LOCATE_parser___ReduceAction470___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction470].i]) return;
-  return_label973: while(false);
-  init_table[VAL2OBJ( self)->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, 22321, LOCATE_parser___ReduceAction471___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction471___action, LOCATE_parser, 22331); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction471___action, LOCATE_parser, 22333); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction471___action, LOCATE_parser, 22335); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 22345, LOCATE_parser___ReduceAction471___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction471].i]) return;
-  return_label975: while(false);
-  init_table[VAL2OBJ( self)->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, 22349, LOCATE_parser___ReduceAction472___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction472___action, LOCATE_parser, 22360); nit_exit(1);}
-  variable[12] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction472___action, LOCATE_parser, 22362); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction472___action, LOCATE_parser, 22364); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 22374, LOCATE_parser___ReduceAction472___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction472].i]) return;
-  return_label977: while(false);
-  init_table[VAL2OBJ( self)->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, 22378, LOCATE_parser___ReduceAction473___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction473___action, LOCATE_parser, 22384); nit_exit(1);}
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(37)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 22388, LOCATE_parser___ReduceAction473___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction473].i]) return;
-  return_label979: while(false);
-  init_table[VAL2OBJ( self)->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, 22392, LOCATE_parser___ReduceAction474___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(37)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 22399, LOCATE_parser___ReduceAction474___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction474].i]) return;
-  return_label981: while(false);
-  init_table[VAL2OBJ( self)->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, 22403, LOCATE_parser___ReduceAction475___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction475___action, LOCATE_parser, 22413); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction475___action, LOCATE_parser, 22415); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction475___action, LOCATE_parser, 22417); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction475___action, LOCATE_parser, 22419); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 22429, LOCATE_parser___ReduceAction475___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction475].i]) return;
-  return_label983: while(false);
-  init_table[VAL2OBJ( self)->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, 22433, LOCATE_parser___ReduceAction476___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction476___action, LOCATE_parser, 22441); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist3*/;
-  variable[10] = TAG_Bool(( variable[9] /*tkwdonode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwdonode3*/, 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___ReduceAction476___action, LOCATE_parser, 22443); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction476___action, LOCATE_parser, 22445); nit_exit(1);}
-  variable[12] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr( variable[8] /*pexprnode2*/,  variable[9] /*tkwdonode3*/,  variable[10] /*pexprnode4*/); /*new AForExpr*/
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 22454, LOCATE_parser___ReduceAction476___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction476].i]) return;
-  return_label985: while(false);
-  init_table[VAL2OBJ( self)->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, 22458, LOCATE_parser___ReduceAction477___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  variable[12] = TAG_Bool(( variable[11] /*tkwfornode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwfornode2*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 22469); nit_exit(1);}
-  variable[12] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction477___action, LOCATE_parser, 22471); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist7*/;
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode4*/, 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___ReduceAction477___action, LOCATE_parser, 22473); nit_exit(1);}
-  variable[15] = NEW_AForVardeclExpr_parser_prod___AForVardeclExpr___init_aforvardeclexpr( variable[11] /*tkwfornode2*/,  variable[12] /*tidnode3*/,  variable[13] /*pexprnode4*/); /*new AForVardeclExpr*/
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(40)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 22482, LOCATE_parser___ReduceAction477___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction477].i]) return;
-  return_label987: while(false);
-  init_table[VAL2OBJ( self)->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, 22486, LOCATE_parser___ReduceAction478___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction478___action, LOCATE_parser, 22492); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction478___action, LOCATE_parser, 22494); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(41)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 22503, LOCATE_parser___ReduceAction478___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction478].i]) return;
-  return_label989: while(false);
-  init_table[VAL2OBJ( self)->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, 22507, LOCATE_parser___ReduceAction479___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction479___action, LOCATE_parser, 22514); nit_exit(1);}
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction479___action, LOCATE_parser, 22516); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction479___action, LOCATE_parser, 22518); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(41)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 22527, LOCATE_parser___ReduceAction479___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction479].i]) return;
-  return_label991: while(false);
-  init_table[VAL2OBJ( self)->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, 22531, LOCATE_parser___ReduceAction480___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction480___action, LOCATE_parser, 22537); nit_exit(1);}
-  variable[3] =  variable[6] /*tidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 22541, LOCATE_parser___ReduceAction480___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction480].i]) return;
-  return_label993: while(false);
-  init_table[VAL2OBJ( self)->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, 22545, LOCATE_parser___ReduceAction481___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction481___action, LOCATE_parser, 22550); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 22554, LOCATE_parser___ReduceAction481___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction481].i]) return;
-  return_label995: while(false);
-  init_table[VAL2OBJ( self)->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, 22558, LOCATE_parser___ReduceAction482___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction482___action, LOCATE_parser, 22570); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction482___action, LOCATE_parser, 22572); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction482___action, LOCATE_parser, 22574); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction482___action, LOCATE_parser, 22583); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 22600, LOCATE_parser___ReduceAction482___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction482].i]) return;
-  return_label997: while(false);
-  init_table[VAL2OBJ( self)->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, 22604, LOCATE_parser___ReduceAction483___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction483___action, LOCATE_parser, 22615); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction483___action, LOCATE_parser, 22617); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction483___action, LOCATE_parser, 22626); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 22643, LOCATE_parser___ReduceAction483___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction483].i]) return;
-  return_label999: while(false);
-  init_table[VAL2OBJ( self)->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, 22647, LOCATE_parser___ReduceAction484___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction484___action, LOCATE_parser, 22656); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction484___action, LOCATE_parser, 22658); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction484___action, LOCATE_parser, 22667); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 22683, LOCATE_parser___ReduceAction484___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction484].i]) return;
-  return_label1001: while(false);
-  init_table[VAL2OBJ( self)->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, 22687, LOCATE_parser___ReduceAction485___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction485___action, LOCATE_parser, 22692); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 22696, LOCATE_parser___ReduceAction485___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction485].i]) return;
-  return_label1003: while(false);
-  init_table[VAL2OBJ( self)->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, 22700, LOCATE_parser___ReduceAction486___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction486___action, LOCATE_parser, 22715); nit_exit(1);}
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction486___action, LOCATE_parser, 22717); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction486___action, LOCATE_parser, 22719); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction486___action, LOCATE_parser, 22721); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  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___ReduceAction486___action, LOCATE_parser, 22723); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  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___ReduceAction486___action, LOCATE_parser, 22725); nit_exit(1);}
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 22737, LOCATE_parser___ReduceAction486___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction486].i]) return;
-  return_label1005: while(false);
-  init_table[VAL2OBJ( self)->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, 22741, LOCATE_parser___ReduceAction487___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction487___action, LOCATE_parser, 22746); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 22750, LOCATE_parser___ReduceAction487___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction487].i]) return;
-  return_label1007: while(false);
-  init_table[VAL2OBJ( self)->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, 22754, LOCATE_parser___ReduceAction488___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction488___action, LOCATE_parser, 22762); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction488___action, LOCATE_parser, 22764); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 22772, LOCATE_parser___ReduceAction488___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction488].i]) return;
-  return_label1009: while(false);
-  init_table[VAL2OBJ( self)->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, 22776, LOCATE_parser___ReduceAction489___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22784); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22786); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22794, LOCATE_parser___ReduceAction489___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction489].i]) return;
-  return_label1011: while(false);
-  init_table[VAL2OBJ( self)->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, 22798, LOCATE_parser___ReduceAction490___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction490___action, LOCATE_parser, 22803); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 22807, LOCATE_parser___ReduceAction490___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction490].i]) return;
-  return_label1013: while(false);
-  init_table[VAL2OBJ( self)->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, 22811, LOCATE_parser___ReduceAction491___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction491___action, LOCATE_parser, 22818); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction491___action, LOCATE_parser, 22820); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 22828, LOCATE_parser___ReduceAction491___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction491].i]) return;
-  return_label1015: while(false);
-  init_table[VAL2OBJ( self)->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, 22832, LOCATE_parser___ReduceAction492___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction492___action, LOCATE_parser, 22837); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 22841, LOCATE_parser___ReduceAction492___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction492].i]) return;
-  return_label1017: while(false);
-  init_table[VAL2OBJ( self)->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, 22845, LOCATE_parser___ReduceAction493___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction493___action, LOCATE_parser, 22853); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction493___action, LOCATE_parser, 22855); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 22863, LOCATE_parser___ReduceAction493___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction493].i]) return;
-  return_label1019: while(false);
-  init_table[VAL2OBJ( self)->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, 22867, LOCATE_parser___ReduceAction494___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22875); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22877); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22885, LOCATE_parser___ReduceAction494___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction494].i]) return;
-  return_label1021: while(false);
-  init_table[VAL2OBJ( self)->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, 22889, LOCATE_parser___ReduceAction495___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22897); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22899); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22907, LOCATE_parser___ReduceAction495___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction495].i]) return;
-  return_label1023: while(false);
-  init_table[VAL2OBJ( self)->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, 22911, LOCATE_parser___ReduceAction496___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22919); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22921); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22929, LOCATE_parser___ReduceAction496___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction496].i]) return;
-  return_label1025: while(false);
-  init_table[VAL2OBJ( self)->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, 22933, LOCATE_parser___ReduceAction497___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22941); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22943); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22951, LOCATE_parser___ReduceAction497___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction497].i]) return;
-  return_label1027: while(false);
-  init_table[VAL2OBJ( self)->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, 22955, LOCATE_parser___ReduceAction498___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22963); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22965); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22973, LOCATE_parser___ReduceAction498___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction498].i]) return;
-  return_label1029: while(false);
-  init_table[VAL2OBJ( self)->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, 22977, LOCATE_parser___ReduceAction499___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 22985); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 22987); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 22995, LOCATE_parser___ReduceAction499___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction499].i]) return;
-  return_label1031: while(false);
-  init_table[VAL2OBJ( self)->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, 22999, LOCATE_parser___ReduceAction500___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 23007); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 23009); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23017, LOCATE_parser___ReduceAction500___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction500].i]) return;
-  return_label1033: while(false);
-  init_table[VAL2OBJ( self)->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, 23021, LOCATE_parser___ReduceAction501___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 23029); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction501___action, LOCATE_parser, 23031); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23039, LOCATE_parser___ReduceAction501___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction501].i]) return;
-  return_label1035: while(false);
-  init_table[VAL2OBJ( self)->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, 23043, LOCATE_parser___ReduceAction502___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction502___action, LOCATE_parser, 23048); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 23052, LOCATE_parser___ReduceAction502___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction502].i]) return;
-  return_label1037: while(false);
-  init_table[VAL2OBJ( self)->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, 23056, LOCATE_parser___ReduceAction503___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction503___action, LOCATE_parser, 23064); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction503___action, LOCATE_parser, 23066); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23074, LOCATE_parser___ReduceAction503___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction503].i]) return;
-  return_label1039: while(false);
-  init_table[VAL2OBJ( self)->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, 23078, LOCATE_parser___ReduceAction504___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 23086); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 23088); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23096, LOCATE_parser___ReduceAction504___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction504].i]) return;
-  return_label1041: while(false);
-  init_table[VAL2OBJ( self)->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, 23100, LOCATE_parser___ReduceAction505___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction505___action, LOCATE_parser, 23105); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 23109, LOCATE_parser___ReduceAction505___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction505].i]) return;
-  return_label1043: while(false);
-  init_table[VAL2OBJ( self)->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, 23113, LOCATE_parser___ReduceAction506___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction506___action, LOCATE_parser, 23121); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction506___action, LOCATE_parser, 23123); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23131, LOCATE_parser___ReduceAction506___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction506].i]) return;
-  return_label1045: while(false);
-  init_table[VAL2OBJ( self)->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, 23135, LOCATE_parser___ReduceAction507___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 23143); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 23145); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23153, LOCATE_parser___ReduceAction507___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction507].i]) return;
-  return_label1047: while(false);
-  init_table[VAL2OBJ( self)->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, 23157, LOCATE_parser___ReduceAction508___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 23165); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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, 23167); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23175, LOCATE_parser___ReduceAction508___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction508].i]) return;
-  return_label1049: while(false);
-  init_table[VAL2OBJ( self)->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, 23179, LOCATE_parser___ReduceAction509___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction509___action, LOCATE_parser, 23184); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 23188, LOCATE_parser___ReduceAction509___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction509].i]) return;
-  return_label1051: while(false);
-  init_table[VAL2OBJ( self)->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, 23192, LOCATE_parser___ReduceAction510___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction510___action, LOCATE_parser, 23199); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction510___action, LOCATE_parser, 23201); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 23209, LOCATE_parser___ReduceAction510___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction510].i]) return;
-  return_label1053: while(false);
-  init_table[VAL2OBJ( self)->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, 23213, LOCATE_parser___ReduceAction511___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction511___action, LOCATE_parser, 23220); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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, 23222); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23230, LOCATE_parser___ReduceAction511___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction511].i]) return;
-  return_label1055: while(false);
-  init_table[VAL2OBJ( self)->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, 23234, LOCATE_parser___ReduceAction512___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction512___action, LOCATE_parser, 23239); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 23243, LOCATE_parser___ReduceAction512___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction512].i]) return;
-  return_label1057: while(false);
-  init_table[VAL2OBJ( self)->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, 23247, LOCATE_parser___ReduceAction513___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction513___action, LOCATE_parser, 23256); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction513___action, LOCATE_parser, 23258); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction513___action, LOCATE_parser, 23260); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 23277, LOCATE_parser___ReduceAction513___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction513].i]) return;
-  return_label1059: while(false);
-  init_table[VAL2OBJ( self)->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, 23281, LOCATE_parser___ReduceAction514___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction514___action, LOCATE_parser, 23289); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction514___action, LOCATE_parser, 23291); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23299, LOCATE_parser___ReduceAction514___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction514].i]) return;
-  return_label1061: while(false);
-  init_table[VAL2OBJ( self)->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, 23303, LOCATE_parser___ReduceAction515___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction515___action, LOCATE_parser, 23310); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 23318, LOCATE_parser___ReduceAction515___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction515].i]) return;
-  return_label1063: while(false);
-  init_table[VAL2OBJ( self)->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, 23322, LOCATE_parser___ReduceAction516___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction516___action, LOCATE_parser, 23333); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction516___action, LOCATE_parser, 23335); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction516___action, LOCATE_parser, 23337); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 23354, LOCATE_parser___ReduceAction516___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction516].i]) return;
-  return_label1065: while(false);
-  init_table[VAL2OBJ( self)->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, 23358, LOCATE_parser___ReduceAction517___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[8] = variable[9];
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction517___action, LOCATE_parser, 23368); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction517___action, LOCATE_parser, 23370); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 23387, LOCATE_parser___ReduceAction517___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction517].i]) return;
-  return_label1067: while(false);
-  init_table[VAL2OBJ( self)->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, 23391, LOCATE_parser___ReduceAction518___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction518___action, LOCATE_parser, 23398); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction518___action, LOCATE_parser, 23400); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 23416, LOCATE_parser___ReduceAction518___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction518].i]) return;
-  return_label1069: while(false);
-  init_table[VAL2OBJ( self)->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, 23420, LOCATE_parser___ReduceAction519___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction519___action, LOCATE_parser, 23428); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction519___action, LOCATE_parser, 23430); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction519___action, LOCATE_parser, 23432); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 23448, LOCATE_parser___ReduceAction519___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction519].i]) return;
-  return_label1071: while(false);
-  init_table[VAL2OBJ( self)->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, 23452, LOCATE_parser___ReduceAction520___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction520___action, LOCATE_parser, 23462); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction520___action, LOCATE_parser, 23464); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction520___action, LOCATE_parser, 23466); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 23482, LOCATE_parser___ReduceAction520___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction520].i]) return;
-  return_label1073: while(false);
-  init_table[VAL2OBJ( self)->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, 23486, LOCATE_parser___ReduceAction521___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction521___action, LOCATE_parser, 23495); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction521___action, LOCATE_parser, 23497); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23513, LOCATE_parser___ReduceAction521___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction521].i]) return;
-  return_label1075: while(false);
-  init_table[VAL2OBJ( self)->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, 23517, LOCATE_parser___ReduceAction522___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction522___action, LOCATE_parser, 23525); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction522___action, LOCATE_parser, 23527); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23543, LOCATE_parser___ReduceAction522___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction522].i]) return;
-  return_label1077: while(false);
-  init_table[VAL2OBJ( self)->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, 23547, LOCATE_parser___ReduceAction523___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction523___action, LOCATE_parser, 23559); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction523___action, LOCATE_parser, 23561); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction523___action, LOCATE_parser, 23563); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction523___action, LOCATE_parser, 23565); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 23582, LOCATE_parser___ReduceAction523___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction523].i]) return;
-  return_label1079: while(false);
-  init_table[VAL2OBJ( self)->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, 23586, LOCATE_parser___ReduceAction524___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction524___action, LOCATE_parser, 23599); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction524___action, LOCATE_parser, 23601); nit_exit(1);}
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 23609, LOCATE_parser___ReduceAction524___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction524].i]) return;
-  return_label1081: while(false);
-  init_table[VAL2OBJ( self)->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, 23613, LOCATE_parser___ReduceAction525___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[13] =  variable[10] /*nodearraylist3*/;
-  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___ReduceAction525___action, LOCATE_parser, 23626); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist7*/;
-  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___ReduceAction525___action, LOCATE_parser, 23628); nit_exit(1);}
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 23636, LOCATE_parser___ReduceAction525___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction525].i]) return;
-  return_label1083: while(false);
-  init_table[VAL2OBJ( self)->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, 23640, LOCATE_parser___ReduceAction526___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction526___action, LOCATE_parser, 23646); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 23660, LOCATE_parser___ReduceAction526___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction526].i]) return;
-  return_label1085: while(false);
-  init_table[VAL2OBJ( self)->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, 23664, LOCATE_parser___ReduceAction527___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction527___action, LOCATE_parser, 23669); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23676, LOCATE_parser___ReduceAction527___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction527].i]) return;
-  return_label1087: while(false);
-  init_table[VAL2OBJ( self)->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, 23680, LOCATE_parser___ReduceAction528___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction528___action, LOCATE_parser, 23685); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23692, LOCATE_parser___ReduceAction528___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction528].i]) return;
-  return_label1089: while(false);
-  init_table[VAL2OBJ( self)->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, 23696, LOCATE_parser___ReduceAction529___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction529___action, LOCATE_parser, 23701); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23708, LOCATE_parser___ReduceAction529___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction529].i]) return;
-  return_label1091: while(false);
-  init_table[VAL2OBJ( self)->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, 23712, LOCATE_parser___ReduceAction530___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction530___action, LOCATE_parser, 23717); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23724, LOCATE_parser___ReduceAction530___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction530].i]) return;
-  return_label1093: while(false);
-  init_table[VAL2OBJ( self)->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, 23728, LOCATE_parser___ReduceAction531___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction531___action, LOCATE_parser, 23733); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23740, LOCATE_parser___ReduceAction531___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction531].i]) return;
-  return_label1095: while(false);
-  init_table[VAL2OBJ( self)->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, 23744, LOCATE_parser___ReduceAction532___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction532___action, LOCATE_parser, 23749); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23756, LOCATE_parser___ReduceAction532___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction532].i]) return;
-  return_label1097: while(false);
-  init_table[VAL2OBJ( self)->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, 23760, LOCATE_parser___ReduceAction533___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction533___action, LOCATE_parser, 23765); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 23772, LOCATE_parser___ReduceAction533___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction533].i]) return;
-  return_label1099: while(false);
-  init_table[VAL2OBJ( self)->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, 23776, LOCATE_parser___ReduceAction534___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction534___action, LOCATE_parser, 23781); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 23788, LOCATE_parser___ReduceAction534___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction534].i]) return;
-  return_label1101: while(false);
-  init_table[VAL2OBJ( self)->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, 23792, LOCATE_parser___ReduceAction535___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction535___action, LOCATE_parser, 23797); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 23801, LOCATE_parser___ReduceAction535___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction535].i]) return;
-  return_label1103: while(false);
-  init_table[VAL2OBJ( self)->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, 23805, LOCATE_parser___ReduceAction536___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction536___action, LOCATE_parser, 23812); nit_exit(1);}
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 23816, LOCATE_parser___ReduceAction536___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction536].i]) return;
-  return_label1105: while(false);
-  init_table[VAL2OBJ( self)->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, 23820, LOCATE_parser___ReduceAction537___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction537___action, LOCATE_parser, 23834); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction537___action, LOCATE_parser, 23836); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  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___ReduceAction537___action, LOCATE_parser, 23838); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 23847, LOCATE_parser___ReduceAction537___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction537].i]) return;
-  return_label1107: while(false);
-  init_table[VAL2OBJ( self)->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, 23851, LOCATE_parser___ReduceAction538___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction538___action, LOCATE_parser, 23858); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction538___action, LOCATE_parser, 23860); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode2*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode3*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode4*/,  variable[8] /*pexprnode3*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 23877, LOCATE_parser___ReduceAction538___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction538].i]) return;
-  return_label1109: while(false);
-  init_table[VAL2OBJ( self)->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, 23881, LOCATE_parser___ReduceAction539___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction539___action, LOCATE_parser, 23889); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction539___action, LOCATE_parser, 23891); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction539___action, LOCATE_parser, 23893); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[8] /*listnode2*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[9] /*listnode3*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode5*/,  variable[10] /*pexprnode4*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 23917, LOCATE_parser___ReduceAction539___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction539].i]) return;
-  return_label1111: while(false);
-  init_table[VAL2OBJ( self)->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, 23921, LOCATE_parser___ReduceAction540___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction540___action, LOCATE_parser, 23930); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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, 23932); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[8] /*listnode3*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23942, LOCATE_parser___ReduceAction540___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction540].i]) return;
-  return_label1113: while(false);
-  init_table[VAL2OBJ( self)->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, 23946, LOCATE_parser___ReduceAction541___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction541___action, LOCATE_parser, 23951); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 23958, LOCATE_parser___ReduceAction541___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction541].i]) return;
-  return_label1115: while(false);
-  init_table[VAL2OBJ( self)->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, 23962, LOCATE_parser___ReduceAction542___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction542___action, LOCATE_parser, 23971); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction542___action, LOCATE_parser, 23973); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[8] /*listnode3*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(56)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 23983, LOCATE_parser___ReduceAction542___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction542].i]) return;
-  return_label1117: while(false);
-  init_table[VAL2OBJ( self)->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, 23987, LOCATE_parser___ReduceAction543___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction543___action, LOCATE_parser, 23992); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(57)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 23999, LOCATE_parser___ReduceAction543___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction543].i]) return;
-  return_label1119: while(false);
-  init_table[VAL2OBJ( self)->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, 24003, LOCATE_parser___ReduceAction544___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction544___action, LOCATE_parser, 24008); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 24015, LOCATE_parser___ReduceAction544___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction544].i]) return;
-  return_label1121: while(false);
-  init_table[VAL2OBJ( self)->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, 24019, LOCATE_parser___ReduceAction545___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction545___action, LOCATE_parser, 24029); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24036, LOCATE_parser___ReduceAction545___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction545].i]) return;
-  return_label1123: while(false);
-  init_table[VAL2OBJ( self)->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, 24040, LOCATE_parser___ReduceAction546___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction546___action, LOCATE_parser, 24051); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction546___action, LOCATE_parser, 24053); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 24067, LOCATE_parser___ReduceAction546___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction546].i]) return;
-  return_label1125: while(false);
-  init_table[VAL2OBJ( self)->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, 24071, LOCATE_parser___ReduceAction547___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24081, LOCATE_parser___ReduceAction547___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction547].i]) return;
-  return_label1127: while(false);
-  init_table[VAL2OBJ( self)->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, 24085, LOCATE_parser___ReduceAction548___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*listnode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 24092, LOCATE_parser___ReduceAction548___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction548].i]) return;
-  return_label1129: while(false);
-  init_table[VAL2OBJ( self)->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, 24096, LOCATE_parser___ReduceAction549___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction549___action, LOCATE_parser, 24106); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24113, LOCATE_parser___ReduceAction549___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction549].i]) return;
-  return_label1131: while(false);
-  init_table[VAL2OBJ( self)->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, 24117, LOCATE_parser___ReduceAction550___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction550___action, LOCATE_parser, 24128); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction550___action, LOCATE_parser, 24130); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 24144, LOCATE_parser___ReduceAction550___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction550].i]) return;
-  return_label1133: while(false);
-  init_table[VAL2OBJ( self)->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, 24148, LOCATE_parser___ReduceAction551___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction551___action, LOCATE_parser, 24154); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 24161, LOCATE_parser___ReduceAction551___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction551].i]) return;
-  return_label1135: while(false);
-  init_table[VAL2OBJ( self)->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, 24165, LOCATE_parser___ReduceAction552___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24175, LOCATE_parser___ReduceAction552___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction552].i]) return;
-  return_label1137: while(false);
-  init_table[VAL2OBJ( self)->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, 24179, LOCATE_parser___ReduceAction553___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*listnode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 24186, LOCATE_parser___ReduceAction553___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction553].i]) return;
-  return_label1139: while(false);
-  init_table[VAL2OBJ( self)->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, 24190, LOCATE_parser___ReduceAction554___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction554___action, LOCATE_parser, 24200); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24207, LOCATE_parser___ReduceAction554___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction554].i]) return;
-  return_label1141: while(false);
-  init_table[VAL2OBJ( self)->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, 24211, LOCATE_parser___ReduceAction555___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction555___action, LOCATE_parser, 24222); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction555___action, LOCATE_parser, 24224); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 24238, LOCATE_parser___ReduceAction555___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction555].i]) return;
-  return_label1143: while(false);
-  init_table[VAL2OBJ( self)->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, 24242, LOCATE_parser___ReduceAction556___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction556___action, LOCATE_parser, 24250); nit_exit(1);}
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 24254, LOCATE_parser___ReduceAction556___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction556].i]) return;
-  return_label1145: while(false);
-  init_table[VAL2OBJ( self)->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, 24258, LOCATE_parser___ReduceAction557___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction557___action, LOCATE_parser, 24264); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 24271, LOCATE_parser___ReduceAction557___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction557].i]) return;
-  return_label1147: while(false);
-  init_table[VAL2OBJ( self)->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, 24275, LOCATE_parser___ReduceAction558___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction558___action, LOCATE_parser, 24285); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction558___action, LOCATE_parser, 24287); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[10] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode3*/,  variable[10] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[11] /*tidnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*tidnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*tidnode2*/,COLOR_kernel___Object_____eqeq))( variable[11] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode3*/,  variable[11] /*tidnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode3*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 24301, LOCATE_parser___ReduceAction558___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction558].i]) return;
-  return_label1149: while(false);
-  init_table[VAL2OBJ( self)->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, 24305, LOCATE_parser___ReduceAction559___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction559___action, LOCATE_parser, 24311); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(64)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24319, LOCATE_parser___ReduceAction559___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction559].i]) return;
-  return_label1151: while(false);
-  init_table[VAL2OBJ( self)->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, 24323, LOCATE_parser___ReduceAction560___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction560___action, LOCATE_parser, 24330); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction560___action, LOCATE_parser, 24339); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(64)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 24347, LOCATE_parser___ReduceAction560___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction560].i]) return;
-  return_label1153: while(false);
-  init_table[VAL2OBJ( self)->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, 24351, LOCATE_parser___ReduceAction561___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction561___action, LOCATE_parser, 24357); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(64)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24372, LOCATE_parser___ReduceAction561___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction561].i]) return;
-  return_label1155: while(false);
-  init_table[VAL2OBJ( self)->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, 24376, LOCATE_parser___ReduceAction562___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction562___action, LOCATE_parser, 24383); nit_exit(1);}
-  variable[3] =  variable[7] /*tidnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(65)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24387, LOCATE_parser___ReduceAction562___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction562].i]) return;
-  return_label1157: while(false);
-  init_table[VAL2OBJ( self)->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, 24391, LOCATE_parser___ReduceAction563___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction563___action, LOCATE_parser, 24398); nit_exit(1);}
-  variable[3] =  variable[7] /*tclassidnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24402, LOCATE_parser___ReduceAction563___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction563].i]) return;
-  return_label1159: while(false);
-  init_table[VAL2OBJ( self)->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, 24406, LOCATE_parser___ReduceAction564___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 24412, LOCATE_parser___ReduceAction564___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction564].i]) return;
-  return_label1161: while(false);
-  init_table[VAL2OBJ( self)->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, 24416, LOCATE_parser___ReduceAction565___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 24422, LOCATE_parser___ReduceAction565___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction565].i]) return;
-  return_label1163: while(false);
-  init_table[VAL2OBJ( self)->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, 24426, LOCATE_parser___ReduceAction566___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction566___action, LOCATE_parser, 24432); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24446, LOCATE_parser___ReduceAction566___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction566].i]) return;
-  return_label1165: while(false);
-  init_table[VAL2OBJ( self)->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, 24450, LOCATE_parser___ReduceAction567___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction567___action, LOCATE_parser, 24457); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 24471, LOCATE_parser___ReduceAction567___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction567].i]) return;
-  return_label1167: while(false);
-  init_table[VAL2OBJ( self)->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, 24475, LOCATE_parser___ReduceAction568___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 24482, LOCATE_parser___ReduceAction568___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction568].i]) return;
-  return_label1169: while(false);
-  init_table[VAL2OBJ( self)->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, 24486, LOCATE_parser___ReduceAction569___action};
-  val_t variable[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[4] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[4],  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, 24492, LOCATE_parser___ReduceAction569___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction569].i]) return;
-  return_label1171: while(false);
-  init_table[VAL2OBJ( self)->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, 24496, LOCATE_parser___ReduceAction570___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction570___action, LOCATE_parser, 24501); nit_exit(1);}
-  variable[3] =  variable[5] /*pdocnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24505, LOCATE_parser___ReduceAction570___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction570].i]) return;
-  return_label1173: while(false);
-  init_table[VAL2OBJ( self)->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, 24509, LOCATE_parser___ReduceAction571___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24516, LOCATE_parser___ReduceAction571___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction571].i]) return;
-  return_label1175: while(false);
-  init_table[VAL2OBJ( self)->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, 24520, LOCATE_parser___ReduceAction572___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 24528, LOCATE_parser___ReduceAction572___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction572].i]) return;
-  return_label1177: while(false);
-  init_table[VAL2OBJ( self)->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, 24532, LOCATE_parser___ReduceAction573___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 24538, LOCATE_parser___ReduceAction573___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction573].i]) return;
-  return_label1179: while(false);
-  init_table[VAL2OBJ( self)->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, 24542, LOCATE_parser___ReduceAction574___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction574___action, LOCATE_parser, 24548); nit_exit(1);}
-  variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 24556, LOCATE_parser___ReduceAction574___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction574].i]) return;
-  return_label1181: while(false);
-  init_table[VAL2OBJ( self)->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, 24560, LOCATE_parser___ReduceAction575___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction575___action, LOCATE_parser, 24565); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24569, LOCATE_parser___ReduceAction575___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction575].i]) return;
-  return_label1183: while(false);
-  init_table[VAL2OBJ( self)->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, 24573, LOCATE_parser___ReduceAction576___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction576___action, LOCATE_parser, 24585); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction576___action, LOCATE_parser, 24587); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction576___action, LOCATE_parser, 24589); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction576___action, LOCATE_parser, 24598); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 24615, LOCATE_parser___ReduceAction576___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction576].i]) return;
-  return_label1185: while(false);
-  init_table[VAL2OBJ( self)->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, 24619, LOCATE_parser___ReduceAction577___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction577___action, LOCATE_parser, 24630); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction577___action, LOCATE_parser, 24632); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction577___action, LOCATE_parser, 24641); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 24658, LOCATE_parser___ReduceAction577___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction577].i]) return;
-  return_label1187: while(false);
-  init_table[VAL2OBJ( self)->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, 24662, LOCATE_parser___ReduceAction578___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction578___action, LOCATE_parser, 24667); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24671, LOCATE_parser___ReduceAction578___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction578].i]) return;
-  return_label1189: while(false);
-  init_table[VAL2OBJ( self)->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, 24675, LOCATE_parser___ReduceAction579___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction579___action, LOCATE_parser, 24690); nit_exit(1);}
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction579___action, LOCATE_parser, 24692); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction579___action, LOCATE_parser, 24694); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction579___action, LOCATE_parser, 24696); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  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___ReduceAction579___action, LOCATE_parser, 24698); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  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___ReduceAction579___action, LOCATE_parser, 24700); nit_exit(1);}
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 24712, LOCATE_parser___ReduceAction579___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction579].i]) return;
-  return_label1191: while(false);
-  init_table[VAL2OBJ( self)->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, 24716, LOCATE_parser___ReduceAction580___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction580___action, LOCATE_parser, 24721); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24725, LOCATE_parser___ReduceAction580___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction580].i]) return;
-  return_label1193: while(false);
-  init_table[VAL2OBJ( self)->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, 24729, LOCATE_parser___ReduceAction581___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction581___action, LOCATE_parser, 24737); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction581___action, LOCATE_parser, 24739); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24747, LOCATE_parser___ReduceAction581___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction581].i]) return;
-  return_label1195: while(false);
-  init_table[VAL2OBJ( self)->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, 24751, LOCATE_parser___ReduceAction582___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction582___action, LOCATE_parser, 24759); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction582___action, LOCATE_parser, 24761); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24769, LOCATE_parser___ReduceAction582___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction582].i]) return;
-  return_label1197: while(false);
-  init_table[VAL2OBJ( self)->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, 24773, LOCATE_parser___ReduceAction583___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction583___action, LOCATE_parser, 24778); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24782, LOCATE_parser___ReduceAction583___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction583].i]) return;
-  return_label1199: while(false);
-  init_table[VAL2OBJ( self)->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, 24786, LOCATE_parser___ReduceAction584___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction584___action, LOCATE_parser, 24793); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction584___action, LOCATE_parser, 24795); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 24803, LOCATE_parser___ReduceAction584___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction584].i]) return;
-  return_label1201: while(false);
-  init_table[VAL2OBJ( self)->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, 24807, LOCATE_parser___ReduceAction585___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction585___action, LOCATE_parser, 24812); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 24816, LOCATE_parser___ReduceAction585___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction585].i]) return;
-  return_label1203: while(false);
-  init_table[VAL2OBJ( self)->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, 24820, LOCATE_parser___ReduceAction586___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction586___action, LOCATE_parser, 24828); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction586___action, LOCATE_parser, 24830); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24838, LOCATE_parser___ReduceAction586___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction586].i]) return;
-  return_label1205: while(false);
-  init_table[VAL2OBJ( self)->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, 24842, LOCATE_parser___ReduceAction587___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction587___action, LOCATE_parser, 24850); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction587___action, LOCATE_parser, 24852); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24860, LOCATE_parser___ReduceAction587___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction587].i]) return;
-  return_label1207: while(false);
-  init_table[VAL2OBJ( self)->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, 24864, LOCATE_parser___ReduceAction588___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction588___action, LOCATE_parser, 24872); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction588___action, LOCATE_parser, 24874); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 24882, LOCATE_parser___ReduceAction588___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction588].i]) return;
-  return_label1209: while(false);
-  init_table[VAL2OBJ( self)->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, 24886, LOCATE_parser___ReduceAction589___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction589___action, LOCATE_parser, 24894); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction589___action, LOCATE_parser, 24896); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24904, LOCATE_parser___ReduceAction589___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction589].i]) return;
-  return_label1211: while(false);
-  init_table[VAL2OBJ( self)->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, 24908, LOCATE_parser___ReduceAction590___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction590___action, LOCATE_parser, 24916); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction590___action, LOCATE_parser, 24918); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24926, LOCATE_parser___ReduceAction590___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction590].i]) return;
-  return_label1213: while(false);
-  init_table[VAL2OBJ( self)->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, 24930, LOCATE_parser___ReduceAction591___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction591___action, LOCATE_parser, 24938); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction591___action, LOCATE_parser, 24940); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24948, LOCATE_parser___ReduceAction591___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction591].i]) return;
-  return_label1215: while(false);
-  init_table[VAL2OBJ( self)->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, 24952, LOCATE_parser___ReduceAction592___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction592___action, LOCATE_parser, 24960); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction592___action, LOCATE_parser, 24962); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24970, LOCATE_parser___ReduceAction592___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction592].i]) return;
-  return_label1217: while(false);
-  init_table[VAL2OBJ( self)->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, 24974, LOCATE_parser___ReduceAction593___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction593___action, LOCATE_parser, 24982); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction593___action, LOCATE_parser, 24984); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 24992, LOCATE_parser___ReduceAction593___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction593].i]) return;
-  return_label1219: while(false);
-  init_table[VAL2OBJ( self)->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, 24996, LOCATE_parser___ReduceAction594___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction594___action, LOCATE_parser, 25004); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction594___action, LOCATE_parser, 25006); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25014, LOCATE_parser___ReduceAction594___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction594].i]) return;
-  return_label1221: while(false);
-  init_table[VAL2OBJ( self)->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, 25018, LOCATE_parser___ReduceAction595___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction595___action, LOCATE_parser, 25023); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25027, LOCATE_parser___ReduceAction595___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction595].i]) return;
-  return_label1223: while(false);
-  init_table[VAL2OBJ( self)->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, 25031, LOCATE_parser___ReduceAction596___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction596___action, LOCATE_parser, 25039); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction596___action, LOCATE_parser, 25041); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25049, LOCATE_parser___ReduceAction596___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction596].i]) return;
-  return_label1225: while(false);
-  init_table[VAL2OBJ( self)->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, 25053, LOCATE_parser___ReduceAction597___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction597___action, LOCATE_parser, 25061); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction597___action, LOCATE_parser, 25063); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25071, LOCATE_parser___ReduceAction597___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction597].i]) return;
-  return_label1227: while(false);
-  init_table[VAL2OBJ( self)->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, 25075, LOCATE_parser___ReduceAction598___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction598___action, LOCATE_parser, 25080); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25084, LOCATE_parser___ReduceAction598___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction598].i]) return;
-  return_label1229: while(false);
-  init_table[VAL2OBJ( self)->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, 25088, LOCATE_parser___ReduceAction599___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction599___action, LOCATE_parser, 25096); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction599___action, LOCATE_parser, 25098); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25106, LOCATE_parser___ReduceAction599___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction599].i]) return;
-  return_label1231: while(false);
-  init_table[VAL2OBJ( self)->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, 25110, LOCATE_parser___ReduceAction600___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction600___action, LOCATE_parser, 25118); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction600___action, LOCATE_parser, 25120); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25128, LOCATE_parser___ReduceAction600___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction600].i]) return;
-  return_label1233: while(false);
-  init_table[VAL2OBJ( self)->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, 25132, LOCATE_parser___ReduceAction601___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction601___action, LOCATE_parser, 25140); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction601___action, LOCATE_parser, 25142); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25150, LOCATE_parser___ReduceAction601___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction601].i]) return;
-  return_label1235: while(false);
-  init_table[VAL2OBJ( self)->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, 25154, LOCATE_parser___ReduceAction602___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction602___action, LOCATE_parser, 25159); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25163, LOCATE_parser___ReduceAction602___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction602].i]) return;
-  return_label1237: while(false);
-  init_table[VAL2OBJ( self)->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, 25167, LOCATE_parser___ReduceAction603___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction603___action, LOCATE_parser, 25174); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction603___action, LOCATE_parser, 25176); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 25184, LOCATE_parser___ReduceAction603___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction603].i]) return;
-  return_label1239: while(false);
-  init_table[VAL2OBJ( self)->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, 25188, LOCATE_parser___ReduceAction604___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction604___action, LOCATE_parser, 25195); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction604___action, LOCATE_parser, 25197); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 25205, LOCATE_parser___ReduceAction604___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction604].i]) return;
-  return_label1241: while(false);
-  init_table[VAL2OBJ( self)->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, 25209, LOCATE_parser___ReduceAction605___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction605___action, LOCATE_parser, 25214); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25218, LOCATE_parser___ReduceAction605___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction605].i]) return;
-  return_label1243: while(false);
-  init_table[VAL2OBJ( self)->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, 25222, LOCATE_parser___ReduceAction606___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction606___action, LOCATE_parser, 25231); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction606___action, LOCATE_parser, 25233); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction606___action, LOCATE_parser, 25235); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 25252, LOCATE_parser___ReduceAction606___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction606].i]) return;
-  return_label1245: while(false);
-  init_table[VAL2OBJ( self)->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, 25256, LOCATE_parser___ReduceAction607___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 25264); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction607___action, LOCATE_parser, 25266); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 25274, LOCATE_parser___ReduceAction607___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction607].i]) return;
-  return_label1247: while(false);
-  init_table[VAL2OBJ( self)->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, 25278, LOCATE_parser___ReduceAction608___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction608___action, LOCATE_parser, 25285); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 25293, LOCATE_parser___ReduceAction608___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction608].i]) return;
-  return_label1249: while(false);
-  init_table[VAL2OBJ( self)->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, 25297, LOCATE_parser___ReduceAction609___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction609___action, LOCATE_parser, 25308); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction609___action, LOCATE_parser, 25310); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction609___action, LOCATE_parser, 25312); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 25329, LOCATE_parser___ReduceAction609___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction609].i]) return;
-  return_label1251: while(false);
-  init_table[VAL2OBJ( self)->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, 25333, LOCATE_parser___ReduceAction610___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[8] = variable[9];
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction610___action, LOCATE_parser, 25343); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction610___action, LOCATE_parser, 25345); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 25362, LOCATE_parser___ReduceAction610___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction610].i]) return;
-  return_label1253: while(false);
-  init_table[VAL2OBJ( self)->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, 25366, LOCATE_parser___ReduceAction611___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction611___action, LOCATE_parser, 25373); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction611___action, LOCATE_parser, 25375); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 25391, LOCATE_parser___ReduceAction611___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction611].i]) return;
-  return_label1255: while(false);
-  init_table[VAL2OBJ( self)->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, 25395, LOCATE_parser___ReduceAction612___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction612___action, LOCATE_parser, 25403); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction612___action, LOCATE_parser, 25405); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction612___action, LOCATE_parser, 25407); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 25423, LOCATE_parser___ReduceAction612___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction612].i]) return;
-  return_label1257: while(false);
-  init_table[VAL2OBJ( self)->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, 25427, LOCATE_parser___ReduceAction613___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction613___action, LOCATE_parser, 25437); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction613___action, LOCATE_parser, 25439); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction613___action, LOCATE_parser, 25441); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 25457, LOCATE_parser___ReduceAction613___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction613].i]) return;
-  return_label1259: while(false);
-  init_table[VAL2OBJ( self)->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, 25461, LOCATE_parser___ReduceAction614___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction614___action, LOCATE_parser, 25470); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction614___action, LOCATE_parser, 25472); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 25488, LOCATE_parser___ReduceAction614___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction614].i]) return;
-  return_label1261: while(false);
-  init_table[VAL2OBJ( self)->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, 25492, LOCATE_parser___ReduceAction615___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction615___action, LOCATE_parser, 25504); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction615___action, LOCATE_parser, 25506); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction615___action, LOCATE_parser, 25508); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction615___action, LOCATE_parser, 25510); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 25527, LOCATE_parser___ReduceAction615___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction615].i]) return;
-  return_label1263: while(false);
-  init_table[VAL2OBJ( self)->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, 25531, LOCATE_parser___ReduceAction616___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction616___action, LOCATE_parser, 25536); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25543, LOCATE_parser___ReduceAction616___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction616].i]) return;
-  return_label1265: while(false);
-  init_table[VAL2OBJ( self)->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, 25547, LOCATE_parser___ReduceAction617___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction617___action, LOCATE_parser, 25552); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25559, LOCATE_parser___ReduceAction617___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction617].i]) return;
-  return_label1267: while(false);
-  init_table[VAL2OBJ( self)->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, 25563, LOCATE_parser___ReduceAction618___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction618___action, LOCATE_parser, 25568); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25575, LOCATE_parser___ReduceAction618___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction618].i]) return;
-  return_label1269: while(false);
-  init_table[VAL2OBJ( self)->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, 25579, LOCATE_parser___ReduceAction619___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction619___action, LOCATE_parser, 25584); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25591, LOCATE_parser___ReduceAction619___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction619].i]) return;
-  return_label1271: while(false);
-  init_table[VAL2OBJ( self)->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, 25595, LOCATE_parser___ReduceAction620___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction620___action, LOCATE_parser, 25600); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25607, LOCATE_parser___ReduceAction620___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction620].i]) return;
-  return_label1273: while(false);
-  init_table[VAL2OBJ( self)->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, 25611, LOCATE_parser___ReduceAction621___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction621___action, LOCATE_parser, 25616); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25623, LOCATE_parser___ReduceAction621___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction621].i]) return;
-  return_label1275: while(false);
-  init_table[VAL2OBJ( self)->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, 25627, LOCATE_parser___ReduceAction622___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction622___action, LOCATE_parser, 25632); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25639, LOCATE_parser___ReduceAction622___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction622].i]) return;
-  return_label1277: while(false);
-  init_table[VAL2OBJ( self)->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, 25643, LOCATE_parser___ReduceAction623___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction623___action, LOCATE_parser, 25648); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25655, LOCATE_parser___ReduceAction623___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction623].i]) return;
-  return_label1279: while(false);
-  init_table[VAL2OBJ( self)->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, 25659, LOCATE_parser___ReduceAction624___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction624___action, LOCATE_parser, 25664); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25668, LOCATE_parser___ReduceAction624___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction624].i]) return;
-  return_label1281: while(false);
-  init_table[VAL2OBJ( self)->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, 25672, LOCATE_parser___ReduceAction625___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction625___action, LOCATE_parser, 25679); nit_exit(1);}
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 25683, LOCATE_parser___ReduceAction625___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction625].i]) return;
-  return_label1283: while(false);
-  init_table[VAL2OBJ( self)->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, 25687, LOCATE_parser___ReduceAction626___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction626___action, LOCATE_parser, 25701); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction626___action, LOCATE_parser, 25703); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  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___ReduceAction626___action, LOCATE_parser, 25705); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 25714, LOCATE_parser___ReduceAction626___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction626].i]) return;
-  return_label1285: while(false);
-  init_table[VAL2OBJ( self)->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, 25718, LOCATE_parser___ReduceAction627___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction627___action, LOCATE_parser, 25723); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25727, LOCATE_parser___ReduceAction627___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction627].i]) return;
-  return_label1287: while(false);
-  init_table[VAL2OBJ( self)->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, 25731, LOCATE_parser___ReduceAction628___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction628___action, LOCATE_parser, 25740); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 25750, LOCATE_parser___ReduceAction628___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction628].i]) return;
-  return_label1289: while(false);
-  init_table[VAL2OBJ( self)->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, 25754, LOCATE_parser___ReduceAction629___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction629___action, LOCATE_parser, 25764); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction629___action, LOCATE_parser, 25766); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 25783, LOCATE_parser___ReduceAction629___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction629].i]) return;
-  return_label1291: while(false);
-  init_table[VAL2OBJ( self)->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, 25787, LOCATE_parser___ReduceAction630___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25795, LOCATE_parser___ReduceAction630___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction630].i]) return;
-  return_label1293: while(false);
-  init_table[VAL2OBJ( self)->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, 25799, LOCATE_parser___ReduceAction631___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  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, 25806, LOCATE_parser___ReduceAction631___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction631].i]) return;
-  return_label1295: while(false);
-  init_table[VAL2OBJ( self)->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, 25810, LOCATE_parser___ReduceAction632___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction632___action, LOCATE_parser, 25815); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25819, LOCATE_parser___ReduceAction632___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction632].i]) return;
-  return_label1297: while(false);
-  init_table[VAL2OBJ( self)->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, 25823, LOCATE_parser___ReduceAction633___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction633___action, LOCATE_parser, 25828); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25832, LOCATE_parser___ReduceAction633___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction633].i]) return;
-  return_label1299: while(false);
-  init_table[VAL2OBJ( self)->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, 25836, LOCATE_parser___ReduceAction634___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction634___action, LOCATE_parser, 25841); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25849, LOCATE_parser___ReduceAction634___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction634].i]) return;
-  return_label1301: while(false);
-  init_table[VAL2OBJ( self)->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, 25853, LOCATE_parser___ReduceAction635___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction635___action, LOCATE_parser, 25859); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction635___action, LOCATE_parser, 25861); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 25869, LOCATE_parser___ReduceAction635___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction635].i]) return;
-  return_label1303: while(false);
-  init_table[VAL2OBJ( self)->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, 25873, LOCATE_parser___ReduceAction636___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction636___action, LOCATE_parser, 25878); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25886, LOCATE_parser___ReduceAction636___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction636].i]) return;
-  return_label1305: while(false);
-  init_table[VAL2OBJ( self)->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, 25890, LOCATE_parser___ReduceAction637___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction637___action, LOCATE_parser, 25896); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction637___action, LOCATE_parser, 25898); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 25906, LOCATE_parser___ReduceAction637___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction637].i]) return;
-  return_label1307: while(false);
-  init_table[VAL2OBJ( self)->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, 25910, LOCATE_parser___ReduceAction638___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction638___action, LOCATE_parser, 25915); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 25922, LOCATE_parser___ReduceAction638___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction638].i]) return;
-  return_label1309: while(false);
-  init_table[VAL2OBJ( self)->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, 25926, LOCATE_parser___ReduceAction639___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction639___action, LOCATE_parser, 25931); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 25939, LOCATE_parser___ReduceAction639___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction639].i]) return;
-  return_label1311: while(false);
-  init_table[VAL2OBJ( self)->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, 25943, LOCATE_parser___ReduceAction640___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction640___action, LOCATE_parser, 25949); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction640___action, LOCATE_parser, 25951); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 25959, LOCATE_parser___ReduceAction640___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction640].i]) return;
-  return_label1313: while(false);
-  init_table[VAL2OBJ( self)->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, 25963, LOCATE_parser___ReduceAction641___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction641___action, LOCATE_parser, 25968); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25972, LOCATE_parser___ReduceAction641___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction641].i]) return;
-  return_label1315: while(false);
-  init_table[VAL2OBJ( self)->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, 25976, LOCATE_parser___ReduceAction642___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction642___action, LOCATE_parser, 25981); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25985, LOCATE_parser___ReduceAction642___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction642].i]) return;
-  return_label1317: while(false);
-  init_table[VAL2OBJ( self)->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, 25989, LOCATE_parser___ReduceAction643___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction643___action, LOCATE_parser, 25994); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 25998, LOCATE_parser___ReduceAction643___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction643].i]) return;
-  return_label1319: while(false);
-  init_table[VAL2OBJ( self)->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, 26002, LOCATE_parser___ReduceAction644___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction644___action, LOCATE_parser, 26007); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 26011, LOCATE_parser___ReduceAction644___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction644].i]) return;
-  return_label1321: while(false);
-  init_table[VAL2OBJ( self)->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, 26015, LOCATE_parser___ReduceAction645___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction645___action, LOCATE_parser, 26020); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 26024, LOCATE_parser___ReduceAction645___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction645].i]) return;
-  return_label1323: while(false);
-  init_table[VAL2OBJ( self)->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, 26028, LOCATE_parser___ReduceAction646___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction646___action, LOCATE_parser, 26039); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction646___action, LOCATE_parser, 26041); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction646___action, LOCATE_parser, 26043); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 26060, LOCATE_parser___ReduceAction646___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction646].i]) return;
-  return_label1325: while(false);
-  init_table[VAL2OBJ( self)->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, 26064, LOCATE_parser___ReduceAction647___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[8] = variable[9];
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction647___action, LOCATE_parser, 26074); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction647___action, LOCATE_parser, 26076); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 26093, LOCATE_parser___ReduceAction647___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction647].i]) return;
-  return_label1327: while(false);
-  init_table[VAL2OBJ( self)->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, 26097, LOCATE_parser___ReduceAction648___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction648___action, LOCATE_parser, 26109); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction648___action, LOCATE_parser, 26111); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction648___action, LOCATE_parser, 26113); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction648___action, LOCATE_parser, 26122); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 26139, LOCATE_parser___ReduceAction648___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction648].i]) return;
-  return_label1329: while(false);
-  init_table[VAL2OBJ( self)->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, 26143, LOCATE_parser___ReduceAction649___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction649___action, LOCATE_parser, 26154); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction649___action, LOCATE_parser, 26156); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction649___action, LOCATE_parser, 26165); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 26182, LOCATE_parser___ReduceAction649___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction649].i]) return;
-  return_label1331: while(false);
-  init_table[VAL2OBJ( self)->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, 26186, LOCATE_parser___ReduceAction650___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction650___action, LOCATE_parser, 26193); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction650___action, LOCATE_parser, 26195); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 26211, LOCATE_parser___ReduceAction650___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction650].i]) return;
-  return_label1333: while(false);
-  init_table[VAL2OBJ( self)->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, 26215, LOCATE_parser___ReduceAction651___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction651___action, LOCATE_parser, 26223); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction651___action, LOCATE_parser, 26225); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction651___action, LOCATE_parser, 26227); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 26243, LOCATE_parser___ReduceAction651___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction651].i]) return;
-  return_label1335: while(false);
-  init_table[VAL2OBJ( self)->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, 26247, LOCATE_parser___ReduceAction652___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction652___action, LOCATE_parser, 26257); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction652___action, LOCATE_parser, 26259); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction652___action, LOCATE_parser, 26261); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 26277, LOCATE_parser___ReduceAction652___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction652].i]) return;
-  return_label1337: while(false);
-  init_table[VAL2OBJ( self)->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, 26281, LOCATE_parser___ReduceAction653___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction653___action, LOCATE_parser, 26290); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction653___action, LOCATE_parser, 26292); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 26308, LOCATE_parser___ReduceAction653___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction653].i]) return;
-  return_label1339: while(false);
-  init_table[VAL2OBJ( self)->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, 26312, LOCATE_parser___ReduceAction654___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction654___action, LOCATE_parser, 26318); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 26325, LOCATE_parser___ReduceAction654___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction654].i]) return;
-  return_label1341: while(false);
-  init_table[VAL2OBJ( self)->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, 26329, LOCATE_parser___ReduceAction655___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction655___action, LOCATE_parser, 26336); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction655___action, LOCATE_parser, 26338); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 26352, LOCATE_parser___ReduceAction655___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction655].i]) return;
-  return_label1343: while(false);
-  init_table[VAL2OBJ( self)->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, 26356, LOCATE_parser___ReduceAction656___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction656___action, LOCATE_parser, 26364); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction656___action, LOCATE_parser, 26366); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction656___action, LOCATE_parser, 26368); nit_exit(1);}
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 26378, LOCATE_parser___ReduceAction656___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction656].i]) return;
-  return_label1345: while(false);
-  init_table[VAL2OBJ( self)->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, 26382, LOCATE_parser___ReduceAction657___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction657___action, LOCATE_parser, 26391); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction657___action, LOCATE_parser, 26393); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction657___action, LOCATE_parser, 26402); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction657___action, LOCATE_parser, 26404); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 26414, LOCATE_parser___ReduceAction657___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction657].i]) return;
-  return_label1347: while(false);
-  init_table[VAL2OBJ( self)->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, 26418, LOCATE_parser___ReduceAction658___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction658___action, LOCATE_parser, 26424); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction658___action, LOCATE_parser, 26426); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 26437, LOCATE_parser___ReduceAction658___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction658].i]) return;
-  return_label1349: while(false);
-  init_table[VAL2OBJ( self)->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, 26441, LOCATE_parser___ReduceAction659___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction659___action, LOCATE_parser, 26448); nit_exit(1);}
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction659___action, LOCATE_parser, 26450); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction659___action, LOCATE_parser, 26452); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 26463, LOCATE_parser___ReduceAction659___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction659].i]) return;
-  return_label1351: while(false);
-  init_table[VAL2OBJ( self)->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, 26467, LOCATE_parser___ReduceAction660___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction660___action, LOCATE_parser, 26476); nit_exit(1);}
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  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___ReduceAction660___action, LOCATE_parser, 26478); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction660___action, LOCATE_parser, 26480); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction660___action, LOCATE_parser, 26482); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 26493, LOCATE_parser___ReduceAction660___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction660].i]) return;
-  return_label1353: while(false);
-  init_table[VAL2OBJ( self)->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, 26497, LOCATE_parser___ReduceAction661___action};
-  val_t variable[17];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction661___action, LOCATE_parser, 26507); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction661___action, LOCATE_parser, 26509); nit_exit(1);}
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction661___action, LOCATE_parser, 26511); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction661___action, LOCATE_parser, 26513); nit_exit(1);}
-  variable[14] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction661___action, LOCATE_parser, 26515); nit_exit(1);}
-  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=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  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, 26526, LOCATE_parser___ReduceAction661___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction661].i]) return;
-  return_label1355: while(false);
-  init_table[VAL2OBJ( self)->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, 26530, LOCATE_parser___ReduceAction662___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction662___action, LOCATE_parser, 26540); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction662___action, LOCATE_parser, 26542); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction662___action, LOCATE_parser, 26544); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction662___action, LOCATE_parser, 26546); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 26556, LOCATE_parser___ReduceAction662___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction662].i]) return;
-  return_label1357: while(false);
-  init_table[VAL2OBJ( self)->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, 26560, LOCATE_parser___ReduceAction663___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction663___action, LOCATE_parser, 26569); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction663___action, LOCATE_parser, 26571); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction663___action, LOCATE_parser, 26573); nit_exit(1);}
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 26583, LOCATE_parser___ReduceAction663___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction663].i]) return;
-  return_label1359: while(false);
-  init_table[VAL2OBJ( self)->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, 26587, LOCATE_parser___ReduceAction664___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction664___action, LOCATE_parser, 26599); nit_exit(1);}
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction664___action, LOCATE_parser, 26601); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction664___action, LOCATE_parser, 26603); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction664___action, LOCATE_parser, 26612); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction664___action, LOCATE_parser, 26614); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 26625, LOCATE_parser___ReduceAction664___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction664].i]) return;
-  return_label1361: while(false);
-  init_table[VAL2OBJ( self)->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, 26629, LOCATE_parser___ReduceAction665___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction665___action, LOCATE_parser, 26640); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction665___action, LOCATE_parser, 26642); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction665___action, LOCATE_parser, 26651); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction665___action, LOCATE_parser, 26653); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 26664, LOCATE_parser___ReduceAction665___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction665].i]) return;
-  return_label1363: while(false);
-  init_table[VAL2OBJ( self)->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, 26668, LOCATE_parser___ReduceAction666___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction666___action, LOCATE_parser, 26677); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction666___action, LOCATE_parser, 26679); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction666___action, LOCATE_parser, 26688); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction666___action, LOCATE_parser, 26690); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 26700, LOCATE_parser___ReduceAction666___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction666].i]) return;
-  return_label1365: while(false);
-  init_table[VAL2OBJ( self)->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, 26704, LOCATE_parser___ReduceAction667___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction667___action, LOCATE_parser, 26714); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction667___action, LOCATE_parser, 26716); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction667___action, LOCATE_parser, 26718); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction667___action, LOCATE_parser, 26720); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 26730, LOCATE_parser___ReduceAction667___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction667].i]) return;
-  return_label1367: while(false);
-  init_table[VAL2OBJ( self)->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, 26734, LOCATE_parser___ReduceAction668___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction668___action, LOCATE_parser, 26743); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction668___action, LOCATE_parser, 26745); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction668___action, LOCATE_parser, 26747); nit_exit(1);}
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 26757, LOCATE_parser___ReduceAction668___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction668].i]) return;
-  return_label1369: while(false);
-  init_table[VAL2OBJ( self)->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, 26761, LOCATE_parser___ReduceAction669___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction669___action, LOCATE_parser, 26773); nit_exit(1);}
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction669___action, LOCATE_parser, 26775); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  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___ReduceAction669___action, LOCATE_parser, 26777); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction669___action, LOCATE_parser, 26786); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction669___action, LOCATE_parser, 26788); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 26799, LOCATE_parser___ReduceAction669___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction669].i]) return;
-  return_label1371: while(false);
-  init_table[VAL2OBJ( self)->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, 26803, LOCATE_parser___ReduceAction670___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction670___action, LOCATE_parser, 26814); nit_exit(1);}
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction670___action, LOCATE_parser, 26816); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction670___action, LOCATE_parser, 26825); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction670___action, LOCATE_parser, 26827); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 26838, LOCATE_parser___ReduceAction670___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction670].i]) return;
-  return_label1373: while(false);
-  init_table[VAL2OBJ( self)->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, 26842, LOCATE_parser___ReduceAction671___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction671___action, LOCATE_parser, 26851); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  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___ReduceAction671___action, LOCATE_parser, 26853); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction671___action, LOCATE_parser, 26862); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction671___action, LOCATE_parser, 26864); nit_exit(1);}
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 26874, LOCATE_parser___ReduceAction671___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction671].i]) return;
-  return_label1375: while(false);
-  init_table[VAL2OBJ( self)->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, 26878, LOCATE_parser___ReduceAction672___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction672___action, LOCATE_parser, 26884); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction672___action, LOCATE_parser, 26886); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 26894, LOCATE_parser___ReduceAction672___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction672].i]) return;
-  return_label1377: while(false);
-  init_table[VAL2OBJ( self)->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, 26898, LOCATE_parser___ReduceAction673___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  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___ReduceAction673___action, LOCATE_parser, 26910); nit_exit(1);}
-  variable[13] =  variable[9] /*nodearraylist3*/;
-  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___ReduceAction673___action, LOCATE_parser, 26912); nit_exit(1);}
-  variable[14] =  variable[6] /*nodearraylist6*/;
-  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___ReduceAction673___action, LOCATE_parser, 26914); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist8*/;
-  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___ReduceAction673___action, LOCATE_parser, 26916); nit_exit(1);}
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 26926, LOCATE_parser___ReduceAction673___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction673].i]) return;
-  return_label1379: while(false);
-  init_table[VAL2OBJ( self)->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, 26930, LOCATE_parser___ReduceAction674___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction674___action, LOCATE_parser, 26940); nit_exit(1);}
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  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___ReduceAction674___action, LOCATE_parser, 26942); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction674___action, LOCATE_parser, 26944); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction674___action, LOCATE_parser, 26946); nit_exit(1);}
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(90)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 26956, LOCATE_parser___ReduceAction674___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction674].i]) return;
-  return_label1381: while(false);
-  init_table[VAL2OBJ( self)->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, 26960, LOCATE_parser___ReduceAction675___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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, 26968); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist3*/;
-  variable[10] = TAG_Bool(( variable[9] /*tkwdonode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwdonode3*/, 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___ReduceAction675___action, LOCATE_parser, 26970); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction675___action, LOCATE_parser, 26972); nit_exit(1);}
-  variable[12] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr( variable[8] /*pexprnode2*/,  variable[9] /*tkwdonode3*/,  variable[10] /*pexprnode4*/); /*new AForExpr*/
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(91)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 26981, LOCATE_parser___ReduceAction675___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction675].i]) return;
-  return_label1383: while(false);
-  init_table[VAL2OBJ( self)->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, 26985, LOCATE_parser___ReduceAction676___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction676___action, LOCATE_parser, 26991); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction676___action, LOCATE_parser, 26993); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(92)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  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, 27002, LOCATE_parser___ReduceAction676___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction676].i]) return;
-  return_label1385: while(false);
-  init_table[VAL2OBJ( self)->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, 27006, LOCATE_parser___ReduceAction677___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction677___action, LOCATE_parser, 27013); nit_exit(1);}
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction677___action, LOCATE_parser, 27015); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction677___action, LOCATE_parser, 27017); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(92)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27026, LOCATE_parser___ReduceAction677___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction677].i]) return;
-  return_label1387: while(false);
-  init_table[VAL2OBJ( self)->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, 27030, LOCATE_parser___ReduceAction678___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction678___action, LOCATE_parser, 27035); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27039, LOCATE_parser___ReduceAction678___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction678].i]) return;
-  return_label1389: while(false);
-  init_table[VAL2OBJ( self)->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, 27043, LOCATE_parser___ReduceAction679___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction679___action, LOCATE_parser, 27055); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction679___action, LOCATE_parser, 27057); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction679___action, LOCATE_parser, 27059); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction679___action, LOCATE_parser, 27068); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 27085, LOCATE_parser___ReduceAction679___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction679].i]) return;
-  return_label1391: while(false);
-  init_table[VAL2OBJ( self)->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, 27089, LOCATE_parser___ReduceAction680___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction680___action, LOCATE_parser, 27100); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction680___action, LOCATE_parser, 27102); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction680___action, LOCATE_parser, 27111); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 27128, LOCATE_parser___ReduceAction680___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction680].i]) return;
-  return_label1393: while(false);
-  init_table[VAL2OBJ( self)->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, 27132, LOCATE_parser___ReduceAction681___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction681___action, LOCATE_parser, 27141); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction681___action, LOCATE_parser, 27143); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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, 27152); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 27168, LOCATE_parser___ReduceAction681___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction681].i]) return;
-  return_label1395: while(false);
-  init_table[VAL2OBJ( self)->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, 27172, LOCATE_parser___ReduceAction682___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction682___action, LOCATE_parser, 27177); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27181, LOCATE_parser___ReduceAction682___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction682].i]) return;
-  return_label1397: while(false);
-  init_table[VAL2OBJ( self)->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, 27185, LOCATE_parser___ReduceAction683___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction683___action, LOCATE_parser, 27197); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction683___action, LOCATE_parser, 27199); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction683___action, LOCATE_parser, 27201); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction683___action, LOCATE_parser, 27210); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 27227, LOCATE_parser___ReduceAction683___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction683].i]) return;
-  return_label1399: while(false);
-  init_table[VAL2OBJ( self)->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, 27231, LOCATE_parser___ReduceAction684___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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, 27242); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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, 27244); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction684___action, LOCATE_parser, 27253); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 27270, LOCATE_parser___ReduceAction684___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction684].i]) return;
-  return_label1401: while(false);
-  init_table[VAL2OBJ( self)->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, 27274, LOCATE_parser___ReduceAction685___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction685___action, LOCATE_parser, 27280); nit_exit(1);}
-  variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 27288, LOCATE_parser___ReduceAction685___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction685].i]) return;
-  return_label1403: while(false);
-  init_table[VAL2OBJ( self)->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, 27292, LOCATE_parser___ReduceAction686___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  variable[12] = TAG_Bool(( variable[11] /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tclassidnode2*/, 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___ReduceAction686___action, LOCATE_parser, 27303); nit_exit(1);}
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction686___action, LOCATE_parser, 27305); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[14] = NEW_AType_parser_prod___AType___init_atype( variable[11] /*tclassidnode2*/,  variable[10] /*listnode4*/); /*new AType*/
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*ptypenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 27320, LOCATE_parser___ReduceAction686___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction686].i]) return;
-  return_label1405: while(false);
-  init_table[VAL2OBJ( self)->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, 27324, LOCATE_parser___ReduceAction687___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction687___action, LOCATE_parser, 27329); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27333, LOCATE_parser___ReduceAction687___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction687].i]) return;
-  return_label1407: while(false);
-  init_table[VAL2OBJ( self)->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, 27337, LOCATE_parser___ReduceAction688___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction688___action, LOCATE_parser, 27349); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction688___action, LOCATE_parser, 27351); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction688___action, LOCATE_parser, 27353); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction688___action, LOCATE_parser, 27362); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 27379, LOCATE_parser___ReduceAction688___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction688].i]) return;
-  return_label1409: while(false);
-  init_table[VAL2OBJ( self)->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, 27383, LOCATE_parser___ReduceAction689___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction689___action, LOCATE_parser, 27394); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction689___action, LOCATE_parser, 27396); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction689___action, LOCATE_parser, 27405); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 27422, LOCATE_parser___ReduceAction689___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction689].i]) return;
-  return_label1411: while(false);
-  init_table[VAL2OBJ( self)->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, 27426, LOCATE_parser___ReduceAction690___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction690___action, LOCATE_parser, 27431); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27435, LOCATE_parser___ReduceAction690___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction690].i]) return;
-  return_label1413: while(false);
-  init_table[VAL2OBJ( self)->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, 27439, LOCATE_parser___ReduceAction691___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction691___action, LOCATE_parser, 27454); nit_exit(1);}
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction691___action, LOCATE_parser, 27456); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction691___action, LOCATE_parser, 27458); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction691___action, LOCATE_parser, 27460); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  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___ReduceAction691___action, LOCATE_parser, 27462); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  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___ReduceAction691___action, LOCATE_parser, 27464); nit_exit(1);}
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  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, 27476, LOCATE_parser___ReduceAction691___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction691].i]) return;
-  return_label1415: while(false);
-  init_table[VAL2OBJ( self)->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, 27480, LOCATE_parser___ReduceAction692___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction692___action, LOCATE_parser, 27485); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27489, LOCATE_parser___ReduceAction692___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction692].i]) return;
-  return_label1417: while(false);
-  init_table[VAL2OBJ( self)->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, 27493, LOCATE_parser___ReduceAction693___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction693___action, LOCATE_parser, 27501); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction693___action, LOCATE_parser, 27503); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27511, LOCATE_parser___ReduceAction693___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction693].i]) return;
-  return_label1419: while(false);
-  init_table[VAL2OBJ( self)->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, 27515, LOCATE_parser___ReduceAction694___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction694___action, LOCATE_parser, 27523); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction694___action, LOCATE_parser, 27525); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27533, LOCATE_parser___ReduceAction694___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction694].i]) return;
-  return_label1421: while(false);
-  init_table[VAL2OBJ( self)->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, 27537, LOCATE_parser___ReduceAction695___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction695___action, LOCATE_parser, 27542); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27546, LOCATE_parser___ReduceAction695___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction695].i]) return;
-  return_label1423: while(false);
-  init_table[VAL2OBJ( self)->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, 27550, LOCATE_parser___ReduceAction696___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction696___action, LOCATE_parser, 27557); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction696___action, LOCATE_parser, 27559); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 27567, LOCATE_parser___ReduceAction696___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction696].i]) return;
-  return_label1425: while(false);
-  init_table[VAL2OBJ( self)->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, 27571, LOCATE_parser___ReduceAction697___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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, 27576); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 27580, LOCATE_parser___ReduceAction697___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction697].i]) return;
-  return_label1427: while(false);
-  init_table[VAL2OBJ( self)->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, 27584, LOCATE_parser___ReduceAction698___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction698___action, LOCATE_parser, 27592); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction698___action, LOCATE_parser, 27594); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27602, LOCATE_parser___ReduceAction698___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction698].i]) return;
-  return_label1429: while(false);
-  init_table[VAL2OBJ( self)->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, 27606, LOCATE_parser___ReduceAction699___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction699___action, LOCATE_parser, 27614); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction699___action, LOCATE_parser, 27616); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27624, LOCATE_parser___ReduceAction699___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction699].i]) return;
-  return_label1431: while(false);
-  init_table[VAL2OBJ( self)->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, 27628, LOCATE_parser___ReduceAction700___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction700___action, LOCATE_parser, 27636); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction700___action, LOCATE_parser, 27638); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27646, LOCATE_parser___ReduceAction700___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction700].i]) return;
-  return_label1433: while(false);
-  init_table[VAL2OBJ( self)->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, 27650, LOCATE_parser___ReduceAction701___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction701___action, LOCATE_parser, 27658); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction701___action, LOCATE_parser, 27660); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27668, LOCATE_parser___ReduceAction701___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction701].i]) return;
-  return_label1435: while(false);
-  init_table[VAL2OBJ( self)->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, 27672, LOCATE_parser___ReduceAction702___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction702___action, LOCATE_parser, 27680); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction702___action, LOCATE_parser, 27682); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27690, LOCATE_parser___ReduceAction702___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction702].i]) return;
-  return_label1437: while(false);
-  init_table[VAL2OBJ( self)->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, 27694, LOCATE_parser___ReduceAction703___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction703___action, LOCATE_parser, 27702); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction703___action, LOCATE_parser, 27704); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27712, LOCATE_parser___ReduceAction703___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction703].i]) return;
-  return_label1439: while(false);
-  init_table[VAL2OBJ( self)->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, 27716, LOCATE_parser___ReduceAction704___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction704___action, LOCATE_parser, 27724); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction704___action, LOCATE_parser, 27726); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27734, LOCATE_parser___ReduceAction704___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction704].i]) return;
-  return_label1441: while(false);
-  init_table[VAL2OBJ( self)->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, 27738, LOCATE_parser___ReduceAction705___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction705___action, LOCATE_parser, 27746); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction705___action, LOCATE_parser, 27748); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27756, LOCATE_parser___ReduceAction705___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction705].i]) return;
-  return_label1443: while(false);
-  init_table[VAL2OBJ( self)->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, 27760, LOCATE_parser___ReduceAction706___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction706___action, LOCATE_parser, 27768); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction706___action, LOCATE_parser, 27770); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27778, LOCATE_parser___ReduceAction706___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction706].i]) return;
-  return_label1445: while(false);
-  init_table[VAL2OBJ( self)->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, 27782, LOCATE_parser___ReduceAction707___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction707___action, LOCATE_parser, 27787); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27791, LOCATE_parser___ReduceAction707___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction707].i]) return;
-  return_label1447: while(false);
-  init_table[VAL2OBJ( self)->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, 27795, LOCATE_parser___ReduceAction708___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction708___action, LOCATE_parser, 27803); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction708___action, LOCATE_parser, 27805); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27813, LOCATE_parser___ReduceAction708___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction708].i]) return;
-  return_label1449: while(false);
-  init_table[VAL2OBJ( self)->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, 27817, LOCATE_parser___ReduceAction709___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction709___action, LOCATE_parser, 27825); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction709___action, LOCATE_parser, 27827); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27835, LOCATE_parser___ReduceAction709___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction709].i]) return;
-  return_label1451: while(false);
-  init_table[VAL2OBJ( self)->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, 27839, LOCATE_parser___ReduceAction710___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction710___action, LOCATE_parser, 27844); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27848, LOCATE_parser___ReduceAction710___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction710].i]) return;
-  return_label1453: while(false);
-  init_table[VAL2OBJ( self)->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, 27852, LOCATE_parser___ReduceAction711___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction711___action, LOCATE_parser, 27860); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction711___action, LOCATE_parser, 27862); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27870, LOCATE_parser___ReduceAction711___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction711].i]) return;
-  return_label1455: while(false);
-  init_table[VAL2OBJ( self)->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, 27874, LOCATE_parser___ReduceAction712___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction712___action, LOCATE_parser, 27882); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction712___action, LOCATE_parser, 27884); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27892, LOCATE_parser___ReduceAction712___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction712].i]) return;
-  return_label1457: while(false);
-  init_table[VAL2OBJ( self)->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, 27896, LOCATE_parser___ReduceAction713___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction713___action, LOCATE_parser, 27904); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction713___action, LOCATE_parser, 27906); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 27914, LOCATE_parser___ReduceAction713___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction713].i]) return;
-  return_label1459: while(false);
-  init_table[VAL2OBJ( self)->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, 27918, LOCATE_parser___ReduceAction714___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction714___action, LOCATE_parser, 27923); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27927, LOCATE_parser___ReduceAction714___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction714].i]) return;
-  return_label1461: while(false);
-  init_table[VAL2OBJ( self)->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, 27931, LOCATE_parser___ReduceAction715___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction715___action, LOCATE_parser, 27938); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction715___action, LOCATE_parser, 27940); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 27948, LOCATE_parser___ReduceAction715___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction715].i]) return;
-  return_label1463: while(false);
-  init_table[VAL2OBJ( self)->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, 27952, LOCATE_parser___ReduceAction716___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction716___action, LOCATE_parser, 27959); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction716___action, LOCATE_parser, 27961); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 27969, LOCATE_parser___ReduceAction716___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction716].i]) return;
-  return_label1465: while(false);
-  init_table[VAL2OBJ( self)->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, 27973, LOCATE_parser___ReduceAction717___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction717___action, LOCATE_parser, 27978); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 27982, LOCATE_parser___ReduceAction717___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction717].i]) return;
-  return_label1467: while(false);
-  init_table[VAL2OBJ( self)->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, 27986, LOCATE_parser___ReduceAction718___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction718___action, LOCATE_parser, 27995); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction718___action, LOCATE_parser, 27997); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction718___action, LOCATE_parser, 27999); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  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, 28016, LOCATE_parser___ReduceAction718___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction718].i]) return;
-  return_label1469: while(false);
-  init_table[VAL2OBJ( self)->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, 28020, LOCATE_parser___ReduceAction719___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction719___action, LOCATE_parser, 28028); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction719___action, LOCATE_parser, 28030); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 28038, LOCATE_parser___ReduceAction719___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction719].i]) return;
-  return_label1471: while(false);
-  init_table[VAL2OBJ( self)->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, 28042, LOCATE_parser___ReduceAction720___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction720___action, LOCATE_parser, 28049); nit_exit(1);}
-  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=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  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, 28057, LOCATE_parser___ReduceAction720___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction720].i]) return;
-  return_label1473: while(false);
-  init_table[VAL2OBJ( self)->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, 28061, LOCATE_parser___ReduceAction721___action};
-  val_t variable[16];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction721___action, LOCATE_parser, 28072); nit_exit(1);}
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction721___action, LOCATE_parser, 28074); nit_exit(1);}
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction721___action, LOCATE_parser, 28076); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  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, 28093, LOCATE_parser___ReduceAction721___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction721].i]) return;
-  return_label1475: while(false);
-  init_table[VAL2OBJ( self)->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, 28097, LOCATE_parser___ReduceAction722___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[8] = variable[9];
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction722___action, LOCATE_parser, 28107); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction722___action, LOCATE_parser, 28109); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 28126, LOCATE_parser___ReduceAction722___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction722].i]) return;
-  return_label1477: while(false);
-  init_table[VAL2OBJ( self)->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, 28130, LOCATE_parser___ReduceAction723___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction723___action, LOCATE_parser, 28137); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction723___action, LOCATE_parser, 28139); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  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, 28155, LOCATE_parser___ReduceAction723___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction723].i]) return;
-  return_label1479: while(false);
-  init_table[VAL2OBJ( self)->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, 28159, LOCATE_parser___ReduceAction724___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction724___action, LOCATE_parser, 28167); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction724___action, LOCATE_parser, 28169); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction724___action, LOCATE_parser, 28171); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  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, 28187, LOCATE_parser___ReduceAction724___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction724].i]) return;
-  return_label1481: while(false);
-  init_table[VAL2OBJ( self)->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, 28191, LOCATE_parser___ReduceAction725___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[9] = variable[10];
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  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___ReduceAction725___action, LOCATE_parser, 28201); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction725___action, LOCATE_parser, 28203); nit_exit(1);}
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  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___ReduceAction725___action, LOCATE_parser, 28205); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  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, 28221, LOCATE_parser___ReduceAction725___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction725].i]) return;
-  return_label1483: while(false);
-  init_table[VAL2OBJ( self)->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, 28225, LOCATE_parser___ReduceAction726___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction726___action, LOCATE_parser, 28234); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction726___action, LOCATE_parser, 28236); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  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, 28252, LOCATE_parser___ReduceAction726___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction726].i]) return;
-  return_label1485: while(false);
-  init_table[VAL2OBJ( self)->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, 28256, LOCATE_parser___ReduceAction727___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction727___action, LOCATE_parser, 28268); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction727___action, LOCATE_parser, 28270); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction727___action, LOCATE_parser, 28272); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction727___action, LOCATE_parser, 28274); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  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, 28291, LOCATE_parser___ReduceAction727___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction727].i]) return;
-  return_label1487: while(false);
-  init_table[VAL2OBJ( self)->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, 28295, LOCATE_parser___ReduceAction728___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction728___action, LOCATE_parser, 28300); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 28307, LOCATE_parser___ReduceAction728___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction728].i]) return;
-  return_label1489: while(false);
-  init_table[VAL2OBJ( self)->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, 28311, LOCATE_parser___ReduceAction729___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction729___action, LOCATE_parser, 28316); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 28323, LOCATE_parser___ReduceAction729___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction729].i]) return;
-  return_label1491: while(false);
-  init_table[VAL2OBJ( self)->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, 28327, LOCATE_parser___ReduceAction730___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction730___action, LOCATE_parser, 28332); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 28339, LOCATE_parser___ReduceAction730___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction730].i]) return;
-  return_label1493: while(false);
-  init_table[VAL2OBJ( self)->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, 28343, LOCATE_parser___ReduceAction731___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction731___action, LOCATE_parser, 28348); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 28355, LOCATE_parser___ReduceAction731___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction731].i]) return;
-  return_label1495: while(false);
-  init_table[VAL2OBJ( self)->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, 28359, LOCATE_parser___ReduceAction732___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction732___action, LOCATE_parser, 28364); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 28371, LOCATE_parser___ReduceAction732___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction732].i]) return;
-  return_label1497: while(false);
-  init_table[VAL2OBJ( self)->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, 28375, LOCATE_parser___ReduceAction733___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction733___action, LOCATE_parser, 28380); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 28387, LOCATE_parser___ReduceAction733___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction733].i]) return;
-  return_label1499: while(false);
-  init_table[VAL2OBJ( self)->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, 28391, LOCATE_parser___ReduceAction734___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction734___action, LOCATE_parser, 28396); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( 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, 28403, LOCATE_parser___ReduceAction734___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction734].i]) return;
-  return_label1501: while(false);
-  init_table[VAL2OBJ( self)->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, 28407, LOCATE_parser___ReduceAction735___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction735___action, LOCATE_parser, 28412); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  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, 28419, LOCATE_parser___ReduceAction735___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction735].i]) return;
-  return_label1503: while(false);
-  init_table[VAL2OBJ( self)->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, 28423, LOCATE_parser___ReduceAction736___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction736___action, LOCATE_parser, 28428); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  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, 28432, LOCATE_parser___ReduceAction736___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction736].i]) return;
-  return_label1505: while(false);
-  init_table[VAL2OBJ( self)->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, 28436, LOCATE_parser___ReduceAction737___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction737___action, LOCATE_parser, 28450); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction737___action, LOCATE_parser, 28452); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  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___ReduceAction737___action, LOCATE_parser, 28454); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  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, 28463, LOCATE_parser___ReduceAction737___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction737].i]) return;
-  return_label1507: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction737].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction738___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28467, LOCATE_parser___ReduceAction738___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction738___action, LOCATE_parser, 28473); nit_exit(1);}
-  variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1508: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction738___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28481, LOCATE_parser___ReduceAction738___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction738].i]) return;
-  return_label1509: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction738].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction739___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28485, LOCATE_parser___ReduceAction739___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction739___action, LOCATE_parser, 28490); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1510: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction739___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28494, LOCATE_parser___ReduceAction739___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction739].i]) return;
-  return_label1511: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction739].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction740___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28498, LOCATE_parser___ReduceAction740___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction740___action, LOCATE_parser, 28510); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction740___action, LOCATE_parser, 28512); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction740___action, LOCATE_parser, 28514); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction740___action, LOCATE_parser, 28523); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1512: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction740___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28540, LOCATE_parser___ReduceAction740___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction740].i]) return;
-  return_label1513: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction740].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction741___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28544, LOCATE_parser___ReduceAction741___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction741___action, LOCATE_parser, 28555); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction741___action, LOCATE_parser, 28557); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction741___action, LOCATE_parser, 28566); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1514: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction741___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28583, LOCATE_parser___ReduceAction741___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction741].i]) return;
-  return_label1515: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction741].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction742___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28587, LOCATE_parser___ReduceAction742___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction742___action, LOCATE_parser, 28592); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1516: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction742___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28596, LOCATE_parser___ReduceAction742___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction742].i]) return;
-  return_label1517: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction742].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction743___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28600, LOCATE_parser___ReduceAction743___action};
-  val_t variable[23];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  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___ReduceAction743___action, LOCATE_parser, 28615); nit_exit(1);}
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  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___ReduceAction743___action, LOCATE_parser, 28617); nit_exit(1);}
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  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___ReduceAction743___action, LOCATE_parser, 28619); nit_exit(1);}
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  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___ReduceAction743___action, LOCATE_parser, 28621); nit_exit(1);}
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  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___ReduceAction743___action, LOCATE_parser, 28623); nit_exit(1);}
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  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___ReduceAction743___action, LOCATE_parser, 28625); nit_exit(1);}
-  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=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1518: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction743___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28637, LOCATE_parser___ReduceAction743___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction743].i]) return;
-  return_label1519: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction743].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction744___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28641, LOCATE_parser___ReduceAction744___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction744___action, LOCATE_parser, 28646); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1520: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction744___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28650, LOCATE_parser___ReduceAction744___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction744].i]) return;
-  return_label1521: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction744].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction745___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28654, LOCATE_parser___ReduceAction745___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction745___action, LOCATE_parser, 28662); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction745___action, LOCATE_parser, 28664); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1522: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction745___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28672, LOCATE_parser___ReduceAction745___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction745].i]) return;
-  return_label1523: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction745].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction746___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28676, LOCATE_parser___ReduceAction746___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction746___action, LOCATE_parser, 28684); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction746___action, LOCATE_parser, 28686); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1524: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction746___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28694, LOCATE_parser___ReduceAction746___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction746].i]) return;
-  return_label1525: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction746].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction747___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28698, LOCATE_parser___ReduceAction747___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction747___action, LOCATE_parser, 28703); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1526: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction747___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28707, LOCATE_parser___ReduceAction747___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction747].i]) return;
-  return_label1527: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction747].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction748___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28711, LOCATE_parser___ReduceAction748___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction748___action, LOCATE_parser, 28718); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction748___action, LOCATE_parser, 28720); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1528: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction748___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28728, LOCATE_parser___ReduceAction748___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction748].i]) return;
-  return_label1529: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction748].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction749___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28732, LOCATE_parser___ReduceAction749___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction749___action, LOCATE_parser, 28737); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1530: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction749___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28741, LOCATE_parser___ReduceAction749___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction749].i]) return;
-  return_label1531: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction749].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction750___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28745, LOCATE_parser___ReduceAction750___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction750___action, LOCATE_parser, 28753); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction750___action, LOCATE_parser, 28755); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1532: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction750___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28763, LOCATE_parser___ReduceAction750___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction750].i]) return;
-  return_label1533: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction750].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction751___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28767, LOCATE_parser___ReduceAction751___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction751___action, LOCATE_parser, 28775); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction751___action, LOCATE_parser, 28777); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1534: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction751___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28785, LOCATE_parser___ReduceAction751___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction751].i]) return;
-  return_label1535: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction751].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction752___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28789, LOCATE_parser___ReduceAction752___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction752___action, LOCATE_parser, 28797); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction752___action, LOCATE_parser, 28799); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1536: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction752___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28807, LOCATE_parser___ReduceAction752___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction752].i]) return;
-  return_label1537: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction752].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction753___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28811, LOCATE_parser___ReduceAction753___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction753___action, LOCATE_parser, 28819); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction753___action, LOCATE_parser, 28821); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1538: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction753___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28829, LOCATE_parser___ReduceAction753___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction753].i]) return;
-  return_label1539: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction753].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction754___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28833, LOCATE_parser___ReduceAction754___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction754___action, LOCATE_parser, 28841); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction754___action, LOCATE_parser, 28843); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1540: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction754___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28851, LOCATE_parser___ReduceAction754___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction754].i]) return;
-  return_label1541: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction754].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction755___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28855, LOCATE_parser___ReduceAction755___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction755___action, LOCATE_parser, 28863); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction755___action, LOCATE_parser, 28865); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1542: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction755___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28873, LOCATE_parser___ReduceAction755___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction755].i]) return;
-  return_label1543: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction755].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction756___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28877, LOCATE_parser___ReduceAction756___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction756___action, LOCATE_parser, 28885); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction756___action, LOCATE_parser, 28887); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1544: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction756___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28895, LOCATE_parser___ReduceAction756___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction756].i]) return;
-  return_label1545: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction756].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction757___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28899, LOCATE_parser___ReduceAction757___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction757___action, LOCATE_parser, 28907); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction757___action, LOCATE_parser, 28909); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1546: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction757___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28917, LOCATE_parser___ReduceAction757___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction757].i]) return;
-  return_label1547: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction757].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction758___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28921, LOCATE_parser___ReduceAction758___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction758___action, LOCATE_parser, 28929); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction758___action, LOCATE_parser, 28931); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1548: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction758___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28939, LOCATE_parser___ReduceAction758___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction758].i]) return;
-  return_label1549: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction758].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction759___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28943, LOCATE_parser___ReduceAction759___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction759___action, LOCATE_parser, 28948); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1550: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction759___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28952, LOCATE_parser___ReduceAction759___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction759].i]) return;
-  return_label1551: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction759].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction760___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28956, LOCATE_parser___ReduceAction760___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction760___action, LOCATE_parser, 28964); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction760___action, LOCATE_parser, 28966); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1552: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction760___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28974, LOCATE_parser___ReduceAction760___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction760].i]) return;
-  return_label1553: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction760].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction761___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 28978, LOCATE_parser___ReduceAction761___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction761___action, LOCATE_parser, 28986); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction761___action, LOCATE_parser, 28988); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1554: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction761___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 28996, LOCATE_parser___ReduceAction761___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction761].i]) return;
-  return_label1555: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction761].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction762___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29000, LOCATE_parser___ReduceAction762___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction762___action, LOCATE_parser, 29005); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1556: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction762___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29009, LOCATE_parser___ReduceAction762___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction762].i]) return;
-  return_label1557: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction762].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction763___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29013, LOCATE_parser___ReduceAction763___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction763___action, LOCATE_parser, 29021); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction763___action, LOCATE_parser, 29023); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1558: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction763___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29031, LOCATE_parser___ReduceAction763___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction763].i]) return;
-  return_label1559: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction763].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction764___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29035, LOCATE_parser___ReduceAction764___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction764___action, LOCATE_parser, 29043); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction764___action, LOCATE_parser, 29045); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1560: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction764___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29053, LOCATE_parser___ReduceAction764___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction764].i]) return;
-  return_label1561: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction764].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction765___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29057, LOCATE_parser___ReduceAction765___action};
-  val_t variable[12];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction765___action, LOCATE_parser, 29065); nit_exit(1);}
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction765___action, LOCATE_parser, 29067); nit_exit(1);}
-  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=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1562: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction765___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29075, LOCATE_parser___ReduceAction765___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction765].i]) return;
-  return_label1563: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction765].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction766___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29079, LOCATE_parser___ReduceAction766___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction766___action, LOCATE_parser, 29084); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1564: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction766___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29088, LOCATE_parser___ReduceAction766___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction766].i]) return;
-  return_label1565: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction766].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction767___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29092, LOCATE_parser___ReduceAction767___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction767___action, LOCATE_parser, 29099); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction767___action, LOCATE_parser, 29101); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1566: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction767___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29109, LOCATE_parser___ReduceAction767___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction767].i]) return;
-  return_label1567: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction767].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction768___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29113, LOCATE_parser___ReduceAction768___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction768___action, LOCATE_parser, 29120); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction768___action, LOCATE_parser, 29122); nit_exit(1);}
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1568: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction768___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29130, LOCATE_parser___ReduceAction768___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction768].i]) return;
-  return_label1569: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction768].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction769___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29134, LOCATE_parser___ReduceAction769___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction769___action, LOCATE_parser, 29139); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1570: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction769___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29143, LOCATE_parser___ReduceAction769___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction769].i]) return;
-  return_label1571: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction769].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction770___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29147, LOCATE_parser___ReduceAction770___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  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___ReduceAction770___action, LOCATE_parser, 29156); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  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___ReduceAction770___action, LOCATE_parser, 29158); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  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___ReduceAction770___action, LOCATE_parser, 29160); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1572: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction770___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29177, LOCATE_parser___ReduceAction770___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction770].i]) return;
-  return_label1573: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction770].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction771___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29181, LOCATE_parser___ReduceAction771___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction771___action, LOCATE_parser, 29187); nit_exit(1);}
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction771___action, LOCATE_parser, 29189); nit_exit(1);}
-  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=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1574: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction771___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29197, LOCATE_parser___ReduceAction771___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction771].i]) return;
-  return_label1575: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction771].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction772___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29201, LOCATE_parser___ReduceAction772___action};
-  val_t variable[14];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction772___action, LOCATE_parser, 29210); nit_exit(1);}
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction772___action, LOCATE_parser, 29212); nit_exit(1);}
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction772___action, LOCATE_parser, 29214); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1576: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction772___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29231, LOCATE_parser___ReduceAction772___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction772].i]) return;
-  return_label1577: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction772].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction773___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29235, LOCATE_parser___ReduceAction773___action};
-  val_t variable[11];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction773___action, LOCATE_parser, 29242); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction773___action, LOCATE_parser, 29244); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1578: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction773___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29260, LOCATE_parser___ReduceAction773___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction773].i]) return;
-  return_label1579: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction773].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction774___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29264, LOCATE_parser___ReduceAction774___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction774___action, LOCATE_parser, 29272); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction774___action, LOCATE_parser, 29274); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction774___action, LOCATE_parser, 29276); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1580: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction774___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29292, LOCATE_parser___ReduceAction774___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction774].i]) return;
-  return_label1581: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction774].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction775___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29296, LOCATE_parser___ReduceAction775___action};
-  val_t variable[13];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction775___action, LOCATE_parser, 29304); nit_exit(1);}
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction775___action, LOCATE_parser, 29306); nit_exit(1);}
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction775___action, LOCATE_parser, 29308); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1582: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction775___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29324, LOCATE_parser___ReduceAction775___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction775].i]) return;
-  return_label1583: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction775].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction776___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29328, LOCATE_parser___ReduceAction776___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  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___ReduceAction776___action, LOCATE_parser, 29340); nit_exit(1);}
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction776___action, LOCATE_parser, 29342); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  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___ReduceAction776___action, LOCATE_parser, 29344); nit_exit(1);}
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  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___ReduceAction776___action, LOCATE_parser, 29346); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1584: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction776___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29363, LOCATE_parser___ReduceAction776___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction776].i]) return;
-  return_label1585: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction776].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction777___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29367, LOCATE_parser___ReduceAction777___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction777___action, LOCATE_parser, 29372); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1586: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction777___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29379, LOCATE_parser___ReduceAction777___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction777].i]) return;
-  return_label1587: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction777].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction778___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29383, LOCATE_parser___ReduceAction778___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction778___action, LOCATE_parser, 29388); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1588: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction778___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29395, LOCATE_parser___ReduceAction778___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction778].i]) return;
-  return_label1589: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction778].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction779___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29399, LOCATE_parser___ReduceAction779___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction779___action, LOCATE_parser, 29404); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1590: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction779___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29411, LOCATE_parser___ReduceAction779___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction779].i]) return;
-  return_label1591: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction779].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction780___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29415, LOCATE_parser___ReduceAction780___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction780___action, LOCATE_parser, 29420); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1592: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction780___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29427, LOCATE_parser___ReduceAction780___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction780].i]) return;
-  return_label1593: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction780].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction781___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29431, LOCATE_parser___ReduceAction781___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction781___action, LOCATE_parser, 29436); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1594: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction781___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29443, LOCATE_parser___ReduceAction781___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction781].i]) return;
-  return_label1595: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction781].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction782___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29447, LOCATE_parser___ReduceAction782___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction782___action, LOCATE_parser, 29452); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1596: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction782___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29459, LOCATE_parser___ReduceAction782___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction782].i]) return;
-  return_label1597: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction782].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction783___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29463, LOCATE_parser___ReduceAction783___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction783___action, LOCATE_parser, 29468); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1598: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction783___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29475, LOCATE_parser___ReduceAction783___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction783].i]) return;
-  return_label1599: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction783].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction784___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29479, LOCATE_parser___ReduceAction784___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction784___action, LOCATE_parser, 29484); nit_exit(1);}
-  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=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1600: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction784___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29491, LOCATE_parser___ReduceAction784___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction784].i]) return;
-  return_label1601: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction784].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction785___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29495, LOCATE_parser___ReduceAction785___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction785___action, LOCATE_parser, 29500); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1602: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction785___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29504, LOCATE_parser___ReduceAction785___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction785].i]) return;
-  return_label1603: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction785].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction786___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29508, LOCATE_parser___ReduceAction786___action};
-  val_t variable[19];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  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___ReduceAction786___action, LOCATE_parser, 29522); nit_exit(1);}
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  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___ReduceAction786___action, LOCATE_parser, 29524); nit_exit(1);}
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  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___ReduceAction786___action, LOCATE_parser, 29526); nit_exit(1);}
-  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=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1604: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction786___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29535, LOCATE_parser___ReduceAction786___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction786].i]) return;
-  return_label1605: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction786].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction787___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29539, LOCATE_parser___ReduceAction787___action};
-  val_t variable[9];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction787___action, LOCATE_parser, 29546); nit_exit(1);}
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1606: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction787___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29550, LOCATE_parser___ReduceAction787___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction787].i]) return;
-  return_label1607: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction787].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction788___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29554, LOCATE_parser___ReduceAction788___action};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*pexprnode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1608: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction788___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29562, LOCATE_parser___ReduceAction788___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction788].i]) return;
-  return_label1609: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction788].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction789___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29566, LOCATE_parser___ReduceAction789___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction789___action, LOCATE_parser, 29571); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1610: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction789___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29575, LOCATE_parser___ReduceAction789___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction789].i]) return;
-  return_label1611: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction789].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction790___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29579, LOCATE_parser___ReduceAction790___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction790___action, LOCATE_parser, 29591); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction790___action, LOCATE_parser, 29593); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction790___action, LOCATE_parser, 29595); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction790___action, LOCATE_parser, 29604); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1612: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction790___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29621, LOCATE_parser___ReduceAction790___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction790].i]) return;
-  return_label1613: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction790].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction791___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29625, LOCATE_parser___ReduceAction791___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction791___action, LOCATE_parser, 29636); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction791___action, LOCATE_parser, 29638); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction791___action, LOCATE_parser, 29647); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1614: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction791___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29664, LOCATE_parser___ReduceAction791___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction791].i]) return;
-  return_label1615: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction791].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction792___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29668, LOCATE_parser___ReduceAction792___action};
-  val_t variable[7];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction792___action, LOCATE_parser, 29673); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1616: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction792___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29677, LOCATE_parser___ReduceAction792___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction792].i]) return;
-  return_label1617: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction792].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction793___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29681, LOCATE_parser___ReduceAction793___action};
-  val_t variable[18];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[10] = variable[11];
-  variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[11] = variable[12];
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  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___ReduceAction793___action, LOCATE_parser, 29693); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction793___action, LOCATE_parser, 29695); nit_exit(1);}
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction793___action, LOCATE_parser, 29697); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  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___ReduceAction793___action, LOCATE_parser, 29706); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1618: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction793___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29723, LOCATE_parser___ReduceAction793___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction793].i]) return;
-  return_label1619: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction793].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction794___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29727, LOCATE_parser___ReduceAction794___action};
-  val_t variable[15];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
-  variable[9] = variable[10];
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  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___ReduceAction794___action, LOCATE_parser, 29738); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  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___ReduceAction794___action, LOCATE_parser, 29740); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  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___ReduceAction794___action, LOCATE_parser, 29749); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  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=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1620: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction794___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29766, LOCATE_parser___ReduceAction794___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction794].i]) return;
-  return_label1621: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction794].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction795___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29770, LOCATE_parser___ReduceAction795___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction795___action, LOCATE_parser, 29776); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pimportnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pimportnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pimportnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pimportnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pimportnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pimportnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pimportnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1622: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction795___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29783, LOCATE_parser___ReduceAction795___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction795].i]) return;
-  return_label1623: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction795].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction796___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29787, LOCATE_parser___ReduceAction796___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction796___action, LOCATE_parser, 29794); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction796___action, LOCATE_parser, 29796); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pimportnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pimportnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pimportnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pimportnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pimportnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pimportnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pimportnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1624: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction796___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29810, LOCATE_parser___ReduceAction796___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction796].i]) return;
-  return_label1625: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction796].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction797___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29814, LOCATE_parser___ReduceAction797___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction797___action, LOCATE_parser, 29820); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclassdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclassdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclassdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclassdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclassdefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1626: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction797___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29827, LOCATE_parser___ReduceAction797___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction797].i]) return;
-  return_label1627: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction797].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction798___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29831, LOCATE_parser___ReduceAction798___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction798___action, LOCATE_parser, 29838); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction798___action, LOCATE_parser, 29840); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclassdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclassdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclassdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pclassdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pclassdefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1628: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction798___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29854, LOCATE_parser___ReduceAction798___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction798].i]) return;
-  return_label1629: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction798].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction799___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29858, LOCATE_parser___ReduceAction799___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction799___action, LOCATE_parser, 29864); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*psuperclassnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*psuperclassnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*psuperclassnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*psuperclassnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*psuperclassnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1630: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction799___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29871, LOCATE_parser___ReduceAction799___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction799].i]) return;
-  return_label1631: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction799].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction800___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29875, LOCATE_parser___ReduceAction800___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction800___action, LOCATE_parser, 29882); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction800___action, LOCATE_parser, 29884); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*psuperclassnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*psuperclassnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*psuperclassnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*psuperclassnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*psuperclassnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1632: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction800___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29898, LOCATE_parser___ReduceAction800___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction800].i]) return;
-  return_label1633: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction800].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction801___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29902, LOCATE_parser___ReduceAction801___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction801___action, LOCATE_parser, 29908); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pformaldefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1634: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction801___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29915, LOCATE_parser___ReduceAction801___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction801].i]) return;
-  return_label1635: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction801].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction802___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29919, LOCATE_parser___ReduceAction802___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction802___action, LOCATE_parser, 29926); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction802___action, LOCATE_parser, 29928); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pformaldefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pformaldefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pformaldefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pformaldefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pformaldefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1636: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction802___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29942, LOCATE_parser___ReduceAction802___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction802].i]) return;
-  return_label1637: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction802].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction803___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29946, LOCATE_parser___ReduceAction803___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction803___action, LOCATE_parser, 29952); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1638: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction803___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29959, LOCATE_parser___ReduceAction803___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction803].i]) return;
-  return_label1639: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction803].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction804___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29963, LOCATE_parser___ReduceAction804___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction804___action, LOCATE_parser, 29970); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction804___action, LOCATE_parser, 29972); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1640: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction804___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 29986, LOCATE_parser___ReduceAction804___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction804].i]) return;
-  return_label1641: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction804].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction805___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 29990, LOCATE_parser___ReduceAction805___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction805___action, LOCATE_parser, 29996); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1642: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction805___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30003, LOCATE_parser___ReduceAction805___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction805].i]) return;
-  return_label1643: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction805].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction806___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30007, LOCATE_parser___ReduceAction806___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction806___action, LOCATE_parser, 30014); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction806___action, LOCATE_parser, 30016); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1644: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction806___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30030, LOCATE_parser___ReduceAction806___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction806].i]) return;
-  return_label1645: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction806].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction807___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30034, LOCATE_parser___ReduceAction807___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction807___action, LOCATE_parser, 30040); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredeclnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredeclnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredeclnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredeclnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredeclnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclosuredeclnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclosuredeclnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1646: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction807___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30047, LOCATE_parser___ReduceAction807___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction807].i]) return;
-  return_label1647: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction807].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction808___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30051, LOCATE_parser___ReduceAction808___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction808___action, LOCATE_parser, 30058); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction808___action, LOCATE_parser, 30060); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclosuredeclnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclosuredeclnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pclosuredeclnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclosuredeclnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pclosuredeclnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pclosuredeclnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pclosuredeclnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1648: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction808___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30074, LOCATE_parser___ReduceAction808___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction808].i]) return;
-  return_label1649: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction808].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction809___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30078, LOCATE_parser___ReduceAction809___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction809___action, LOCATE_parser, 30084); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pparamnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1650: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction809___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30091, LOCATE_parser___ReduceAction809___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction809].i]) return;
-  return_label1651: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction809].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction810___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30095, LOCATE_parser___ReduceAction810___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction810___action, LOCATE_parser, 30102); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction810___action, LOCATE_parser, 30104); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pparamnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pparamnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pparamnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pparamnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pparamnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pparamnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pparamnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1652: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction810___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30118, LOCATE_parser___ReduceAction810___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction810].i]) return;
-  return_label1653: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction810].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction811___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30122, LOCATE_parser___ReduceAction811___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction811___action, LOCATE_parser, 30128); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1654: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction811___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30135, LOCATE_parser___ReduceAction811___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction811].i]) return;
-  return_label1655: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction811].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction812___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30139, LOCATE_parser___ReduceAction812___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction812___action, LOCATE_parser, 30146); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction812___action, LOCATE_parser, 30148); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ptypenode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ptypenode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*ptypenode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ptypenode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*ptypenode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*ptypenode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*ptypenode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1656: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction812___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30162, LOCATE_parser___ReduceAction812___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction812].i]) return;
-  return_label1657: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction812].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction813___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30166, LOCATE_parser___ReduceAction813___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction813___action, LOCATE_parser, 30172); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1658: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction813___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30179, LOCATE_parser___ReduceAction813___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction813].i]) return;
-  return_label1659: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction813].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction814___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30183, LOCATE_parser___ReduceAction814___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction814___action, LOCATE_parser, 30190); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction814___action, LOCATE_parser, 30192); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1660: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction814___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30206, LOCATE_parser___ReduceAction814___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction814].i]) return;
-  return_label1661: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction814].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction815___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30210, LOCATE_parser___ReduceAction815___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction815___action, LOCATE_parser, 30216); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode2*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode1*/ /*listnode2=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode2*/,  variable[6] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1662: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction815___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30227, LOCATE_parser___ReduceAction815___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction815].i]) return;
-  return_label1663: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction815].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction816___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30231, LOCATE_parser___ReduceAction816___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction816___action, LOCATE_parser, 30238); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction816___action, LOCATE_parser, 30240); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1664: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction816___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30258, LOCATE_parser___ReduceAction816___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction816].i]) return;
-  return_label1665: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction816].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction817___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30262, LOCATE_parser___ReduceAction817___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction817___action, LOCATE_parser, 30268); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1666: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction817___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30275, LOCATE_parser___ReduceAction817___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction817].i]) return;
-  return_label1667: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction817].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction818___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30279, LOCATE_parser___ReduceAction818___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction818___action, LOCATE_parser, 30286); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction818___action, LOCATE_parser, 30288); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1668: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction818___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30302, LOCATE_parser___ReduceAction818___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction818].i]) return;
-  return_label1669: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction818].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction819___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30306, LOCATE_parser___ReduceAction819___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction819___action, LOCATE_parser, 30312); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1670: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction819___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30319, LOCATE_parser___ReduceAction819___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction819].i]) return;
-  return_label1671: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction819].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction820___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30323, LOCATE_parser___ReduceAction820___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction820___action, LOCATE_parser, 30330); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction820___action, LOCATE_parser, 30332); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tidnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*tidnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*tidnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*tidnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1672: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction820___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30346, LOCATE_parser___ReduceAction820___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction820].i]) return;
-  return_label1673: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction820].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction821___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30350, LOCATE_parser___ReduceAction821___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction821___action, LOCATE_parser, 30356); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tcommentnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tcommentnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tcommentnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*tcommentnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*tcommentnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1674: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction821___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30363, LOCATE_parser___ReduceAction821___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction821].i]) return;
-  return_label1675: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction821].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction822___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30367, LOCATE_parser___ReduceAction822___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction822___action, LOCATE_parser, 30374); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction822___action, LOCATE_parser, 30376); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tcommentnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tcommentnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tcommentnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*tcommentnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*tcommentnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1676: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction822___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30390, LOCATE_parser___ReduceAction822___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction822].i]) return;
-  return_label1677: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction822].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction823___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30394, LOCATE_parser___ReduceAction823___action};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[5] = variable[6];
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  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___ReduceAction823___action, LOCATE_parser, 30400); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*teolnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*teolnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*teolnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*teolnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*teolnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*teolnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*teolnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(134)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1678: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction823___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30407, LOCATE_parser___ReduceAction823___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction823].i]) return;
-  return_label1679: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction823].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction824___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30411, LOCATE_parser___ReduceAction824___action};
-  val_t variable[10];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction824___action, LOCATE_parser, 30418); nit_exit(1);}
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction824___action, LOCATE_parser, 30420); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*teolnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*teolnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*teolnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*teolnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*teolnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*teolnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*teolnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(134)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1680: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction824___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 30434, LOCATE_parser___ReduceAction824___init};
-  val_t variable[2];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction824].i]) return;
-  return_label1681: while(false);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction824].i] = 1;
-  tracehead = trace.prev;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ComputeProdLocationVisitor___init(val_t p0, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_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 = 944;
+  fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:944 */
+  CALL_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;
+}
+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 = 949;
+  fra.me.meth = LOCATE_parser___ReduceAction___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./parser//parser.nit:949 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser, 949);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+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 = 950;
+  fra.me.meth = LOCATE_parser___ReduceAction___concat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  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:952 */
+  REGB0 = CALL_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:953 */
+  CALL_abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./parser//parser.nit:954 */
+  fra.me.REG[0] = fra.me.REG[1];
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void parser___ReduceAction___init(val_t p0, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction].i;
+  struct {struct stack_frame_t me;} fra;
+  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 = 0;
+  fra.me.meth = LOCATE_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
+void parser___ReduceAction0___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 = 960;
+  fra.me.meth = LOCATE_parser___ReduceAction0___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:962 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:963 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:964 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:965 */
+  fra.me.REG[4] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* ./parser//parser.nit:970 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:971 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction0____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 971);
+  }
+  REGB0 = ATTR_parser___ReduceAction0____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction0___init(val_t p0, val_t p1, int* init_table){
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction0].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos4]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 974;
+  fra.me.meth = LOCATE_parser___ReduceAction0___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:974 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction0____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos4] = 1;
+  return;
+}
+void parser___ReduceAction1___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 = 978;
+  fra.me.meth = LOCATE_parser___ReduceAction1___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:980 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:981 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:982 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:983 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:985 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 985);
+  }
+  /* ./parser//parser.nit:986 */
+  fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:991 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:992 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction1____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 992);
+  }
+  REGB0 = ATTR_parser___ReduceAction1____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction1___init(val_t p0, val_t p1, int* init_table){
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction1].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos5]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 995;
+  fra.me.meth = LOCATE_parser___ReduceAction1___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:995 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction1____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos5] = 1;
+  return;
+}
+void parser___ReduceAction2___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 = 999;
+  fra.me.meth = LOCATE_parser___ReduceAction2___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:1001 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1002 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1003 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1004 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1006 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1006);
+  }
+  /* ./parser//parser.nit:1007 */
+  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:1008 */
+  fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:1013 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:1014 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction2____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1014);
+  }
+  REGB0 = ATTR_parser___ReduceAction2____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction2___init(val_t p0, val_t p1, int* init_table){
+  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction2].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos6]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1017;
+  fra.me.meth = LOCATE_parser___ReduceAction2___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1017 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction2____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos6] = 1;
+  return;
+}
+void parser___ReduceAction3___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 = 1021;
+  fra.me.meth = LOCATE_parser___ReduceAction3___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1023 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1024 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1025 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1026 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1027 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1029 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1029);
+  }
+  /* ./parser//parser.nit:1031 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1031);
+  }
+  /* ./parser//parser.nit:1032 */
+  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:1033 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1038 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1039 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction3____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1039);
+  }
+  REGB0 = ATTR_parser___ReduceAction3____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction3___init(val_t p0, val_t p1, int* init_table){
+  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction3].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos7]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1042;
+  fra.me.meth = LOCATE_parser___ReduceAction3___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1042 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction3____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos7] = 1;
+  return;
+}
+void parser___ReduceAction4___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 = 1046;
+  fra.me.meth = LOCATE_parser___ReduceAction4___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:1048 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1049 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1050 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1051 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1053 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1053);
+  }
+  /* ./parser//parser.nit:1054 */
+  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:1055 */
+  fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:1060 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:1061 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction4____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1061);
+  }
+  REGB0 = ATTR_parser___ReduceAction4____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction4___init(val_t p0, val_t p1, int* init_table){
+  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction4].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos8]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1064;
+  fra.me.meth = LOCATE_parser___ReduceAction4___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1064 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction4____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos8] = 1;
+  return;
+}
+void parser___ReduceAction5___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 = 1068;
+  fra.me.meth = LOCATE_parser___ReduceAction5___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1070 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1071 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1072 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1073 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1074 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1076 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1076);
+  }
+  /* ./parser//parser.nit:1078 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1078);
+  }
+  /* ./parser//parser.nit:1079 */
+  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:1080 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1085 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1086 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction5____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1086);
+  }
+  REGB0 = ATTR_parser___ReduceAction5____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction5___init(val_t p0, val_t p1, int* init_table){
+  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction5].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos9]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1089;
+  fra.me.meth = LOCATE_parser___ReduceAction5___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1089 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction5____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos9] = 1;
+  return;
+}
+void parser___ReduceAction6___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 = 1093;
+  fra.me.meth = LOCATE_parser___ReduceAction6___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1095 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1096 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1097 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1098 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1099 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1101 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1101);
+  }
+  /* ./parser//parser.nit:1102 */
+  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:1104 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1104);
+  }
+  /* ./parser//parser.nit:1105 */
+  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:1106 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1111 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1112 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction6____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1112);
+  }
+  REGB0 = ATTR_parser___ReduceAction6____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction6___init(val_t p0, val_t p1, int* init_table){
+  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction6].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos10]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1115;
+  fra.me.meth = LOCATE_parser___ReduceAction6___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1115 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction6____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos10] = 1;
+  return;
+}
+void parser___ReduceAction7___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 = 1119;
+  fra.me.meth = LOCATE_parser___ReduceAction7___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1121 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1122 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1123 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1124 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1125 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1126 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1128 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1128);
+  }
+  /* ./parser//parser.nit:1130 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1130);
+  }
+  /* ./parser//parser.nit:1131 */
+  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:1133 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1133);
+  }
+  /* ./parser//parser.nit:1134 */
+  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:1135 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1140 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1141 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction7____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1141);
+  }
+  REGB0 = ATTR_parser___ReduceAction7____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction7___init(val_t p0, val_t p1, int* init_table){
+  int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction7].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos11]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1144;
+  fra.me.meth = LOCATE_parser___ReduceAction7___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1144 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction7____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos11] = 1;
+  return;
+}
+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 REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1148;
+  fra.me.meth = LOCATE_parser___ReduceAction8___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1150 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1151 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1152 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1153 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1154 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1156 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1156);
+  }
+  /* ./parser//parser.nit:1157 */
+  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:1158 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* ./parser//parser.nit:1161 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1162 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  }
+  /* ./parser//parser.nit:1164 */
+  fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:1169 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:1170 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction8____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1170);
+  }
+  REGB0 = ATTR_parser___ReduceAction8____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction8___init(val_t p0, val_t p1, int* init_table){
+  int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction8].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos12]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1173;
+  fra.me.meth = LOCATE_parser___ReduceAction8___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1173 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction8____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos12] = 1;
+  return;
+}
+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 REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1177;
+  fra.me.meth = LOCATE_parser___ReduceAction9___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1179 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1180 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1181 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1182 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1183 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1185 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1185);
+  }
+  /* ./parser//parser.nit:1186 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1188 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1188);
+  }
+  /* ./parser//parser.nit:1189 */
+  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:1190 */
+  fra.me.REG[7] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
+  /* ./parser//parser.nit:1193 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1194 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  }
+  /* ./parser//parser.nit:1196 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1201 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1202 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction9____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1202);
+  }
+  REGB0 = ATTR_parser___ReduceAction9____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction9___init(val_t p0, val_t p1, int* init_table){
+  int itpos13 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction9].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos13]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1205;
+  fra.me.meth = LOCATE_parser___ReduceAction9___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1205 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction9____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos13] = 1;
+  return;
+}
+void parser___ReduceAction10___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 = 1209;
+  fra.me.meth = LOCATE_parser___ReduceAction10___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1211 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1212 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1213 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1214 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1215 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1217 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1217);
+  }
+  /* ./parser//parser.nit:1218 */
+  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:1219 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1221 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1221);
+  }
+  /* ./parser//parser.nit:1222 */
+  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:1223 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* ./parser//parser.nit:1226 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1227 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:1229 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1234 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1235 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction10____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1235);
+  }
+  REGB0 = ATTR_parser___ReduceAction10____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction10___init(val_t p0, val_t p1, int* init_table){
+  int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction10].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos14]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1238;
+  fra.me.meth = LOCATE_parser___ReduceAction10___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1238 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction10____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos14] = 1;
+  return;
+}
+void parser___ReduceAction11___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 = 1242;
+  fra.me.meth = LOCATE_parser___ReduceAction11___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1244 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1245 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1246 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1247 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1248 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1249 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1251 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1251);
+  }
+  /* ./parser//parser.nit:1253 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1253);
+  }
+  /* ./parser//parser.nit:1254 */
+  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:1255 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1257 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1257);
+  }
+  /* ./parser//parser.nit:1258 */
+  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:1259 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* ./parser//parser.nit:1262 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1263 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:1265 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1270 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1271 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction11____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1271);
+  }
+  REGB0 = ATTR_parser___ReduceAction11____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction11___init(val_t p0, val_t p1, int* init_table){
+  int itpos15 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction11].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos15]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1274;
+  fra.me.meth = LOCATE_parser___ReduceAction11___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1274 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction11____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos15] = 1;
+  return;
+}
+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 REGB1;
+  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___ReduceAction12___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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_array___Array___init();
+  /* ./parser//parser.nit:1284 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1286 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1286);
+  }
+  /* ./parser//parser.nit:1287 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1289 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1289);
+  }
+  /* ./parser//parser.nit:1290 */
+  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:1291 */
+  fra.me.REG[7] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
+  /* ./parser//parser.nit:1294 */
+  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:1295 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1296 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  }
+  /* ./parser//parser.nit:1298 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1303 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1304 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction12____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1304);
+  }
+  REGB0 = ATTR_parser___ReduceAction12____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction12___init(val_t p0, val_t p1, int* init_table){
+  int itpos16 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction12].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos16]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_parser___ReduceAction12___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1307 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction12____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos16] = 1;
+  return;
+}
+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 REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1311;
+  fra.me.meth = LOCATE_parser___ReduceAction13___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1313 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1314 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1315 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1316 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1317 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1318 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1320 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1320);
+  }
+  /* ./parser//parser.nit:1322 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1322);
+  }
+  /* ./parser//parser.nit:1323 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1325 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1325);
+  }
+  /* ./parser//parser.nit:1326 */
+  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:1327 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* ./parser//parser.nit:1330 */
+  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:1331 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1332 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* ./parser//parser.nit:1334 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1339 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1340 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction13____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1340);
+  }
+  REGB0 = ATTR_parser___ReduceAction13____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction13___init(val_t p0, val_t p1, int* init_table){
+  int itpos17 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction13].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos17]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1343;
+  fra.me.meth = LOCATE_parser___ReduceAction13___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1343 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction13____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos17] = 1;
+  return;
+}
+void parser___ReduceAction14___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 = 1347;
+  fra.me.meth = LOCATE_parser___ReduceAction14___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1349 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1350 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1351 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1352 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1353 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1354 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1356 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1356);
+  }
+  /* ./parser//parser.nit:1357 */
+  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:1359 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1359);
+  }
+  /* ./parser//parser.nit:1360 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1362 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1362);
+  }
+  /* ./parser//parser.nit:1363 */
+  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:1364 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* ./parser//parser.nit:1367 */
+  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:1368 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1369 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+  }
+  /* ./parser//parser.nit:1371 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1376 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1377 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction14____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1377);
+  }
+  REGB0 = ATTR_parser___ReduceAction14____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction14___init(val_t p0, val_t p1, int* init_table){
+  int itpos18 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction14].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos18]) return;
+  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___ReduceAction14___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1380 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction14____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos18] = 1;
+  return;
+}
+void parser___ReduceAction15___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 = 1384;
+  fra.me.meth = LOCATE_parser___ReduceAction15___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1388 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1389 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1390 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1391 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1392 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1394 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1394);
+  }
+  /* ./parser//parser.nit:1396 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1396);
+  }
+  /* ./parser//parser.nit:1397 */
+  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:1399 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1399);
+  }
+  /* ./parser//parser.nit:1400 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1402 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1402);
+  }
+  /* ./parser//parser.nit:1403 */
+  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:1404 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* ./parser//parser.nit:1407 */
+  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:1408 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1409 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* ./parser//parser.nit:1411 */
+  fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* ./parser//parser.nit:1416 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* ./parser//parser.nit:1417 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction15____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1417);
+  }
+  REGB0 = ATTR_parser___ReduceAction15____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction15___init(val_t p0, val_t p1, int* init_table){
+  int itpos19 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction15].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos19]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1420;
+  fra.me.meth = LOCATE_parser___ReduceAction15___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1420 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction15____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos19] = 1;
+  return;
+}
+void parser___ReduceAction16___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 = 1424;
+  fra.me.meth = LOCATE_parser___ReduceAction16___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:1426 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1427 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1428 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1429 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1431 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1431);
+  }
+  /* ./parser//parser.nit:1432 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1433 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1435 */
+  fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:1440 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:1441 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction16____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1441);
+  }
+  REGB0 = ATTR_parser___ReduceAction16____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction16___init(val_t p0, val_t p1, int* init_table){
+  int itpos20 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction16].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos20]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1444;
+  fra.me.meth = LOCATE_parser___ReduceAction16___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1444 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction16____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos20] = 1;
+  return;
+}
+void parser___ReduceAction17___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 = 1448;
+  fra.me.meth = LOCATE_parser___ReduceAction17___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1450 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1451 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1452 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1453 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1454 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1456 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1456);
+  }
+  /* ./parser//parser.nit:1458 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1458);
+  }
+  /* ./parser//parser.nit:1459 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1460 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1462 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1467 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1468 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction17____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1468);
+  }
+  REGB0 = ATTR_parser___ReduceAction17____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction17___init(val_t p0, val_t p1, int* init_table){
+  int itpos21 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction17].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos21]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1471;
+  fra.me.meth = LOCATE_parser___ReduceAction17___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1471 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction17____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos21] = 1;
+  return;
+}
+void parser___ReduceAction18___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 = 1475;
+  fra.me.meth = LOCATE_parser___ReduceAction18___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1477 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1478 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1479 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1480 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1481 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1483 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1483);
+  }
+  /* ./parser//parser.nit:1484 */
+  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:1486 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1486);
+  }
+  /* ./parser//parser.nit:1487 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1488 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1490 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1495 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1496 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction18____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1496);
+  }
+  REGB0 = ATTR_parser___ReduceAction18____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction18___init(val_t p0, val_t p1, int* init_table){
+  int itpos22 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction18].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos22]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1499;
+  fra.me.meth = LOCATE_parser___ReduceAction18___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1499 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction18____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos22] = 1;
+  return;
+}
+void parser___ReduceAction19___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 = 1503;
+  fra.me.meth = LOCATE_parser___ReduceAction19___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1505 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1506 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1507 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1508 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1509 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1510 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1512 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1512);
+  }
+  /* ./parser//parser.nit:1514 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1514);
+  }
+  /* ./parser//parser.nit:1515 */
+  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:1517 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1517);
+  }
+  /* ./parser//parser.nit:1518 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1519 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1521 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1526 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1527 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction19____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1527);
+  }
+  REGB0 = ATTR_parser___ReduceAction19____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction19___init(val_t p0, val_t p1, int* init_table){
+  int itpos23 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction19].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos23]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1530;
+  fra.me.meth = LOCATE_parser___ReduceAction19___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1530 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction19____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos23] = 1;
+  return;
+}
+void parser___ReduceAction20___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 = 1534;
+  fra.me.meth = LOCATE_parser___ReduceAction20___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:1536 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1537 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1538 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1539 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1540 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1542 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1542);
+  }
+  /* ./parser//parser.nit:1544 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1544);
+  }
+  /* ./parser//parser.nit:1545 */
+  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:1546 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1547 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1549 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1554 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1555 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction20____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1555);
+  }
+  REGB0 = ATTR_parser___ReduceAction20____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction20___init(val_t p0, val_t p1, int* init_table){
+  int itpos24 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction20].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos24]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1558;
+  fra.me.meth = LOCATE_parser___ReduceAction20___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1558 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction20____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos24] = 1;
+  return;
+}
+void parser___ReduceAction21___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 = 1562;
+  fra.me.meth = LOCATE_parser___ReduceAction21___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1564 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1565 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1566 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1567 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1568 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1569 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1571 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1571);
+  }
+  /* ./parser//parser.nit:1573 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1573);
+  }
+  /* ./parser//parser.nit:1575 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1575);
+  }
+  /* ./parser//parser.nit:1576 */
+  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:1577 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1578 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1580 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1585 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1586 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction21____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1586);
+  }
+  REGB0 = ATTR_parser___ReduceAction21____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction21___init(val_t p0, val_t p1, int* init_table){
+  int itpos25 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction21].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos25]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1589;
+  fra.me.meth = LOCATE_parser___ReduceAction21___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1589 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction21____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos25] = 1;
+  return;
+}
+void parser___ReduceAction22___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 = 1593;
+  fra.me.meth = LOCATE_parser___ReduceAction22___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1595 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1596 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1597 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1598 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1599 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1600 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1602 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1602);
+  }
+  /* ./parser//parser.nit:1603 */
+  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:1605 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1605);
+  }
+  /* ./parser//parser.nit:1607 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1607);
+  }
+  /* ./parser//parser.nit:1608 */
+  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:1609 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1610 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1612 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1617 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1618 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction22____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1618);
+  }
+  REGB0 = ATTR_parser___ReduceAction22____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction22___init(val_t p0, val_t p1, int* init_table){
+  int itpos26 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction22].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos26]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1621;
+  fra.me.meth = LOCATE_parser___ReduceAction22___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1621 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction22____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos26] = 1;
+  return;
+}
+void parser___ReduceAction23___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 = 1625;
+  fra.me.meth = LOCATE_parser___ReduceAction23___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1627 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1628 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1629 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1630 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1631 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1632 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1633 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1635 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1635);
+  }
+  /* ./parser//parser.nit:1637 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1637);
+  }
+  /* ./parser//parser.nit:1638 */
+  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:1640 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1640);
+  }
+  /* ./parser//parser.nit:1642 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1642);
+  }
+  /* ./parser//parser.nit:1643 */
+  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:1644 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1645 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1647 */
+  fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* ./parser//parser.nit:1652 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* ./parser//parser.nit:1653 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction23____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1653);
+  }
+  REGB0 = ATTR_parser___ReduceAction23____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction23___init(val_t p0, val_t p1, int* init_table){
+  int itpos27 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction23].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos27]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1656;
+  fra.me.meth = LOCATE_parser___ReduceAction23___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1656 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction23____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos27] = 1;
+  return;
+}
+void parser___ReduceAction24___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 = 1660;
+  fra.me.meth = LOCATE_parser___ReduceAction24___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1662 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1663 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1664 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1665 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1666 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1667 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1669 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1669);
+  }
+  /* ./parser//parser.nit:1670 */
+  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:1671 */
+  fra.me.REG[7] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
+  /* ./parser//parser.nit:1675 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1675);
+  }
+  /* ./parser//parser.nit:1676 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1677 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  }
+  /* ./parser//parser.nit:1679 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1680 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1682 */
+  fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:1687 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:1688 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction24____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1688);
+  }
+  REGB0 = ATTR_parser___ReduceAction24____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction24___init(val_t p0, val_t p1, int* init_table){
+  int itpos28 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction24].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos28]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1691;
+  fra.me.meth = LOCATE_parser___ReduceAction24___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1691 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction24____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos28] = 1;
+  return;
+}
+void parser___ReduceAction25___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 = 1695;
+  fra.me.meth = LOCATE_parser___ReduceAction25___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1697 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1698 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1699 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1700 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1701 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1702 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1704 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1704);
+  }
+  /* ./parser//parser.nit:1705 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1707 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1707);
+  }
+  /* ./parser//parser.nit:1708 */
+  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:1709 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* ./parser//parser.nit:1713 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1713);
+  }
+  /* ./parser//parser.nit:1714 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1715 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* ./parser//parser.nit:1717 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1718 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1720 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1725 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1726 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction25____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1726);
+  }
+  REGB0 = ATTR_parser___ReduceAction25____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction25___init(val_t p0, val_t p1, int* init_table){
+  int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction25].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos29]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1729;
+  fra.me.meth = LOCATE_parser___ReduceAction25___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1729 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction25____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos29] = 1;
+  return;
+}
+void parser___ReduceAction26___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 = 1733;
+  fra.me.meth = LOCATE_parser___ReduceAction26___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1735 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1736 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1737 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1738 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1739 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1740 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1742 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1742);
+  }
+  /* ./parser//parser.nit:1743 */
+  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:1744 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1746 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1746);
+  }
+  /* ./parser//parser.nit:1747 */
+  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:1748 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* ./parser//parser.nit:1752 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1752);
+  }
+  /* ./parser//parser.nit:1753 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1754 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+  }
+  /* ./parser//parser.nit:1756 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1757 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1759 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1764 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1765 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction26____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1765);
+  }
+  REGB0 = ATTR_parser___ReduceAction26____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction26___init(val_t p0, val_t p1, int* init_table){
+  int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction26].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos30]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1768;
+  fra.me.meth = LOCATE_parser___ReduceAction26___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1768 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction26____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos30] = 1;
+  return;
+}
+void parser___ReduceAction27___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 = 1772;
+  fra.me.meth = LOCATE_parser___ReduceAction27___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1774 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1775 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1776 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1777 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1778 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1779 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1780 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1782 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1782);
+  }
+  /* ./parser//parser.nit:1784 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1784);
+  }
+  /* ./parser//parser.nit:1785 */
+  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:1786 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1788 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1788);
+  }
+  /* ./parser//parser.nit:1789 */
+  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:1790 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* ./parser//parser.nit:1794 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1794);
+  }
+  /* ./parser//parser.nit:1795 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1796 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* ./parser//parser.nit:1798 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1799 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1801 */
+  fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* ./parser//parser.nit:1806 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* ./parser//parser.nit:1807 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction27____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1807);
+  }
+  REGB0 = ATTR_parser___ReduceAction27____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction27___init(val_t p0, val_t p1, int* init_table){
+  int itpos31 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction27].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos31]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1810;
+  fra.me.meth = LOCATE_parser___ReduceAction27___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1810 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction27____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos31] = 1;
+  return;
+}
+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 = 1814;
+  fra.me.meth = LOCATE_parser___ReduceAction28___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1816 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1817 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1818 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1819 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1820 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1821 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1823 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1823);
+  }
+  /* ./parser//parser.nit:1824 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1826 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1826);
+  }
+  /* ./parser//parser.nit:1827 */
+  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:1828 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* ./parser//parser.nit:1832 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1832);
+  }
+  /* ./parser//parser.nit:1833 */
+  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:1834 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1835 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* ./parser//parser.nit:1837 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1838 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1840 */
+  fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:1845 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:1846 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction28____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1846);
+  }
+  REGB0 = ATTR_parser___ReduceAction28____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction28___init(val_t p0, val_t p1, int* init_table){
+  int itpos32 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction28].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos32]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1849;
+  fra.me.meth = LOCATE_parser___ReduceAction28___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1849 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction28____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos32] = 1;
+  return;
+}
+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 = 1853;
+  fra.me.meth = LOCATE_parser___ReduceAction29___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1855 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1856 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1857 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1858 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1859 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1860 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1861 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1863 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1863);
+  }
+  /* ./parser//parser.nit:1865 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1865);
+  }
+  /* ./parser//parser.nit:1866 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1868 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1868);
+  }
+  /* ./parser//parser.nit:1869 */
+  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:1870 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* ./parser//parser.nit:1874 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1874);
+  }
+  /* ./parser//parser.nit:1875 */
+  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:1876 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1877 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* ./parser//parser.nit:1879 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1880 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1882 */
+  fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* ./parser//parser.nit:1887 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* ./parser//parser.nit:1888 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction29____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1888);
+  }
+  REGB0 = ATTR_parser___ReduceAction29____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction29___init(val_t p0, val_t p1, int* init_table){
+  int itpos33 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction29].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos33]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1891;
+  fra.me.meth = LOCATE_parser___ReduceAction29___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1891 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction29____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos33] = 1;
+  return;
+}
+void parser___ReduceAction30___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 = 1895;
+  fra.me.meth = LOCATE_parser___ReduceAction30___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1897 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1898 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1899 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1900 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1901 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1902 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1903 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1905 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1905);
+  }
+  /* ./parser//parser.nit:1906 */
+  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:1908 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1908);
+  }
+  /* ./parser//parser.nit:1909 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1911 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1911);
+  }
+  /* ./parser//parser.nit:1912 */
+  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:1913 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* ./parser//parser.nit:1917 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1917);
+  }
+  /* ./parser//parser.nit:1918 */
+  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:1919 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1920 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
+  }
+  /* ./parser//parser.nit:1922 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1923 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1925 */
+  fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8]);
+  /* ./parser//parser.nit:1930 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* ./parser//parser.nit:1931 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction30____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1931);
+  }
+  REGB0 = ATTR_parser___ReduceAction30____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction30___init(val_t p0, val_t p1, int* init_table){
+  int itpos34 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction30].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos34]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1934;
+  fra.me.meth = LOCATE_parser___ReduceAction30___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1934 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction30____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos34] = 1;
+  return;
+}
+void parser___ReduceAction31___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 = 1938;
+  fra.me.meth = LOCATE_parser___ReduceAction31___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:1940 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1941 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1942 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1943 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1944 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1945 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1946 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1947 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1949 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1949);
+  }
+  /* ./parser//parser.nit:1951 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1951);
+  }
+  /* ./parser//parser.nit:1952 */
+  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:1954 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1954);
+  }
+  /* ./parser//parser.nit:1955 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:1957 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1957);
+  }
+  /* ./parser//parser.nit:1958 */
+  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:1959 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* ./parser//parser.nit:1963 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1963);
+  }
+  /* ./parser//parser.nit:1964 */
+  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:1965 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1966 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
+  }
+  /* ./parser//parser.nit:1968 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:1969 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:1971 */
+  fra.me.REG[9] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* ./parser//parser.nit:1976 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* ./parser//parser.nit:1977 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction31____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1977);
+  }
+  REGB0 = ATTR_parser___ReduceAction31____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction31___init(val_t p0, val_t p1, int* init_table){
+  int itpos35 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction31].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos35]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1980;
+  fra.me.meth = LOCATE_parser___ReduceAction31___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:1980 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction31____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos35] = 1;
+  return;
+}
+void parser___ReduceAction32___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 = 1984;
+  fra.me.meth = LOCATE_parser___ReduceAction32___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:1986 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:1987 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1988 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1989 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1990 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1991 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:1993 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1993);
+  }
+  /* ./parser//parser.nit:1995 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwmodule, ID_TKwmodule)) /*cast nullable TKwmodule*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1995);
+  }
+  /* ./parser//parser.nit:1997 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1997);
+  }
+  /* ./parser//parser.nit:1998 */
+  fra.me.REG[3] = NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:2003 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2004 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction32____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2004);
+  }
+  REGB0 = ATTR_parser___ReduceAction32____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction32___init(val_t p0, val_t p1, int* init_table){
+  int itpos36 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction32].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos36]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2007;
+  fra.me.meth = LOCATE_parser___ReduceAction32___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2007 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction32____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos36] = 1;
+  return;
+}
+void parser___ReduceAction33___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 = 2011;
+  fra.me.meth = LOCATE_parser___ReduceAction33___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:2013 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2014 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2018 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2019 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2021 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2021);
+  }
+  /* ./parser//parser.nit:2023 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwimport, ID_TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2023);
+  }
+  /* ./parser//parser.nit:2025 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2025);
+  }
+  /* ./parser//parser.nit:2026 */
+  fra.me.REG[3] = NEW_AStdImport_parser_prod___AStdImport___init_astdimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:2031 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2032 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction33____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2032);
+  }
+  REGB0 = ATTR_parser___ReduceAction33____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction33___init(val_t p0, val_t p1, int* init_table){
+  int itpos37 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction33].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos37]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2035;
+  fra.me.meth = LOCATE_parser___ReduceAction33___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2035 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction33____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos37] = 1;
+  return;
+}
+void parser___ReduceAction34___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 = 2039;
+  fra.me.meth = LOCATE_parser___ReduceAction34___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:2041 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2042 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2043 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2044 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2045 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2046 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2047 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2049 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2049);
+  }
+  /* ./parser//parser.nit:2051 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwimport, ID_TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2051);
+  }
+  /* ./parser//parser.nit:2053 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwend, ID_TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2053);
+  }
+  /* ./parser//parser.nit:2054 */
+  fra.me.REG[3] = NEW_ANoImport_parser_prod___ANoImport___init_anoimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:2059 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2060 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction34____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2060);
+  }
+  REGB0 = ATTR_parser___ReduceAction34____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction34___init(val_t p0, val_t p1, int* init_table){
+  int itpos38 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction34].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos38]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2063;
+  fra.me.meth = LOCATE_parser___ReduceAction34___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2063 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction34____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos38] = 1;
+  return;
+}
+void parser___ReduceAction35___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 = 2067;
+  fra.me.meth = LOCATE_parser___ReduceAction35___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:2069 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2070 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2071 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2073 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_APropdef, ID_APropdef)) /*cast nullable APropdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2073);
+  }
+  /* ./parser//parser.nit:2074 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:2075 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:2077 */
+  fra.me.REG[4] = NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[4]);
+  /* ./parser//parser.nit:2080 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:2081 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction35____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2081);
+  }
+  REGB0 = ATTR_parser___ReduceAction35____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction35___init(val_t p0, val_t p1, int* init_table){
+  int itpos39 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction35].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos39]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2084;
+  fra.me.meth = LOCATE_parser___ReduceAction35___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2084 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction35____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos39] = 1;
+  return;
+}
+void parser___ReduceAction36___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 = 2088;
+  fra.me.meth = LOCATE_parser___ReduceAction36___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:2090 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2091 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2092 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2093 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction36____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2093);
+  }
+  REGB0 = ATTR_parser___ReduceAction36____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction36___init(val_t p0, val_t p1, int* init_table){
+  int itpos40 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction36].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos40]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2096;
+  fra.me.meth = LOCATE_parser___ReduceAction36___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2096 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction36____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos40] = 1;
+  return;
+}
+void parser___ReduceAction37___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 = 2100;
+  fra.me.meth = LOCATE_parser___ReduceAction37___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:2102 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2103 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2104 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2106 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2106);
+  }
+  /* ./parser//parser.nit:2107 */
+  fra.me.REG[3] = NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef(NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:2111 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2112 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction37____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2112);
+  }
+  REGB0 = ATTR_parser___ReduceAction37____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction37___init(val_t p0, val_t p1, int* init_table){
+  int itpos41 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction37].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos41]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2115;
+  fra.me.meth = LOCATE_parser___ReduceAction37___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2115 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction37____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos41] = 1;
+  return;
+}
+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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2119;
+  fra.me.meth = LOCATE_parser___ReduceAction39___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2121 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2122 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2123 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2124 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2125 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2126 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2127 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2128 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2129 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2130 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2131 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2133 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2133);
+  }
+  /* ./parser//parser.nit:2135 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2135);
+  }
+  /* ./parser//parser.nit:2137 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2137);
+  }
+  /* ./parser//parser.nit:2139 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2139);
+  }
+  /* ./parser//parser.nit:2140 */
+  fra.me.REG[9] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* ./parser//parser.nit:2150 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* ./parser//parser.nit:2151 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction39____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2151);
+  }
+  REGB0 = ATTR_parser___ReduceAction39____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction39___init(val_t p0, val_t p1, int* init_table){
+  int itpos42 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction39].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos42]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2154;
+  fra.me.meth = LOCATE_parser___ReduceAction39___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2154 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction39____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos42] = 1;
+  return;
+}
+void parser___ReduceAction40___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 = 2158;
+  fra.me.meth = LOCATE_parser___ReduceAction40___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2160 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2161 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2162 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2163 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2164 */
+  fra.me.REG[4] = 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] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2167 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2168 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2169 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2170 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2171 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2173 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2173);
+  }
+  /* ./parser//parser.nit:2175 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2175);
+  }
+  /* ./parser//parser.nit:2177 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2177);
+  }
+  /* ./parser//parser.nit:2179 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2179);
+  }
+  /* ./parser//parser.nit:2181 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2181);
+  }
+  /* ./parser//parser.nit:2182 */
+  fra.me.REG[10] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* ./parser//parser.nit:2192 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* ./parser//parser.nit:2193 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction40____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2193);
+  }
+  REGB0 = ATTR_parser___ReduceAction40____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction40___init(val_t p0, val_t p1, int* init_table){
+  int itpos43 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction40].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos43]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2196;
+  fra.me.meth = LOCATE_parser___ReduceAction40___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2196 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction40____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos43] = 1;
+  return;
+}
+void parser___ReduceAction41___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 = 2200;
+  fra.me.meth = LOCATE_parser___ReduceAction41___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2202 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2203 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2204 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2205 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2206 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2207 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2208 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2209 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2210 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2211 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2212 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2213 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2215 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2215);
+  }
+  /* ./parser//parser.nit:2217 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2217);
+  }
+  /* ./parser//parser.nit:2219 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2219);
+  }
+  /* ./parser//parser.nit:2221 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2221);
+  }
+  /* ./parser//parser.nit:2223 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2223);
+  }
+  /* ./parser//parser.nit:2224 */
+  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:2225 */
+  fra.me.REG[10] = NEW_AStdClassdef_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], fra.me.REG[9], fra.me.REG[10]);
+  /* ./parser//parser.nit:2235 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* ./parser//parser.nit:2236 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction41____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2236);
+  }
+  REGB0 = ATTR_parser___ReduceAction41____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction41___init(val_t p0, val_t p1, int* init_table){
+  int itpos44 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction41].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos44]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2239;
+  fra.me.meth = LOCATE_parser___ReduceAction41___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2239 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction41____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos44] = 1;
+  return;
+}
+void parser___ReduceAction42___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 = 2243;
+  fra.me.meth = LOCATE_parser___ReduceAction42___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2245 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2246 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2247 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2248 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2249 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2250 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2251 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2252 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2253 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2254 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2255 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2256 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2257 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2259 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2259);
+  }
+  /* ./parser//parser.nit:2261 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2261);
+  }
+  /* ./parser//parser.nit:2263 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2263);
+  }
+  /* ./parser//parser.nit:2265 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2265);
+  }
+  /* ./parser//parser.nit:2267 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2267);
+  }
+  /* ./parser//parser.nit:2269 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2269);
+  }
+  /* ./parser//parser.nit:2270 */
+  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:2271 */
+  fra.me.REG[11] = NEW_AStdClassdef_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], fra.me.REG[10], fra.me.REG[11]);
+  /* ./parser//parser.nit:2281 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* ./parser//parser.nit:2282 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction42____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2282);
+  }
+  REGB0 = ATTR_parser___ReduceAction42____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction42___init(val_t p0, val_t p1, int* init_table){
+  int itpos45 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction42].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos45]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2285;
+  fra.me.meth = LOCATE_parser___ReduceAction42___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2285 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction42____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos45] = 1;
+  return;
+}
+void parser___ReduceAction43___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 = 2289;
+  fra.me.meth = LOCATE_parser___ReduceAction43___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2291 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2292 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2293 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2294 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2295 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2296 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2297 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2298 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2299 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2300 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2301 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2302 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2304 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2304);
+  }
+  /* ./parser//parser.nit:2306 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2306);
+  }
+  /* ./parser//parser.nit:2308 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2308);
+  }
+  /* ./parser//parser.nit:2310 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2310);
+  }
+  /* ./parser//parser.nit:2312 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2312);
+  }
+  /* ./parser//parser.nit:2313 */
+  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:2314 */
+  fra.me.REG[10] = NEW_AStdClassdef_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], fra.me.REG[9], fra.me.REG[10]);
+  /* ./parser//parser.nit:2324 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* ./parser//parser.nit:2325 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction43____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2325);
+  }
+  REGB0 = ATTR_parser___ReduceAction43____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction43___init(val_t p0, val_t p1, int* init_table){
+  int itpos46 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction43].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos46]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2328;
+  fra.me.meth = LOCATE_parser___ReduceAction43___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2328 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction43____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos46] = 1;
+  return;
+}
+void parser___ReduceAction44___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 = 2332;
+  fra.me.meth = LOCATE_parser___ReduceAction44___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2334 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2335 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2336 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2337 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2338 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2339 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2340 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2341 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2342 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2343 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2344 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2345 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2346 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2348 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2348);
+  }
+  /* ./parser//parser.nit:2350 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2350);
+  }
+  /* ./parser//parser.nit:2352 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2352);
+  }
+  /* ./parser//parser.nit:2354 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2354);
+  }
+  /* ./parser//parser.nit:2356 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2356);
+  }
+  /* ./parser//parser.nit:2358 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2358);
+  }
+  /* ./parser//parser.nit:2359 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[3]);
+  fra.me.REG[10] = fra.me.REG[3];
+  /* ./parser//parser.nit:2360 */
+  fra.me.REG[11] = NEW_AStdClassdef_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], fra.me.REG[10], fra.me.REG[11]);
+  /* ./parser//parser.nit:2370 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* ./parser//parser.nit:2371 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction44____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2371);
+  }
+  REGB0 = ATTR_parser___ReduceAction44____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction44___init(val_t p0, val_t p1, int* init_table){
+  int itpos47 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction44].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos47]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2374;
+  fra.me.meth = LOCATE_parser___ReduceAction44___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2374 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction44____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos47] = 1;
+  return;
+}
+void parser___ReduceAction45___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 = 2378;
+  fra.me.meth = LOCATE_parser___ReduceAction45___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2380 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2381 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2382 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2383 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2384 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2385 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2386 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2387 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2388 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2389 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2390 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2391 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2392 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2394 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2394);
+  }
+  /* ./parser//parser.nit:2396 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2396);
+  }
+  /* ./parser//parser.nit:2398 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2398);
+  }
+  /* ./parser//parser.nit:2400 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2400);
+  }
+  /* ./parser//parser.nit:2402 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2402);
+  }
+  /* ./parser//parser.nit:2403 */
+  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:2405 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2405);
+  }
+  /* ./parser//parser.nit:2406 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[3]);
+  fra.me.REG[10] = fra.me.REG[3];
+  /* ./parser//parser.nit:2407 */
+  fra.me.REG[11] = NEW_AStdClassdef_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[10], fra.me.REG[11]);
+  /* ./parser//parser.nit:2417 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* ./parser//parser.nit:2418 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction45____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2418);
+  }
+  REGB0 = ATTR_parser___ReduceAction45____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction45___init(val_t p0, val_t p1, int* init_table){
+  int itpos48 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction45].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos48]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2421;
+  fra.me.meth = LOCATE_parser___ReduceAction45___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2421 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction45____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos48] = 1;
+  return;
+}
+void parser___ReduceAction46___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 = 2425;
+  fra.me.meth = LOCATE_parser___ReduceAction46___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2427 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2428 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2429 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2430 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2432 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2433 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2434 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2435 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2436 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2437 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2438 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2439 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2440 */
+  fra.me.REG[12] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2442 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2442);
+  }
+  /* ./parser//parser.nit:2444 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2444);
+  }
+  /* ./parser//parser.nit:2446 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2446);
+  }
+  /* ./parser//parser.nit:2448 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2448);
+  }
+  /* ./parser//parser.nit:2450 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2450);
+  }
+  /* ./parser//parser.nit:2452 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2452);
+  }
+  /* ./parser//parser.nit:2453 */
+  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:2455 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2455);
+  }
+  /* ./parser//parser.nit:2456 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
+  fra.me.REG[11] = fra.me.REG[3];
+  /* ./parser//parser.nit:2457 */
+  fra.me.REG[12] = NEW_AStdClassdef_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[11], fra.me.REG[12]);
+  /* ./parser//parser.nit:2467 */
+  fra.me.REG[2] = fra.me.REG[12];
+  /* ./parser//parser.nit:2468 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction46____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2468);
+  }
+  REGB0 = ATTR_parser___ReduceAction46____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction46___init(val_t p0, val_t p1, int* init_table){
+  int itpos49 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction46].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos49]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2471;
+  fra.me.meth = LOCATE_parser___ReduceAction46___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2471 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction46____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos49] = 1;
+  return;
+}
+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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2475;
+  fra.me.meth = LOCATE_parser___ReduceAction47___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2477 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2478 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2479 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2480 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2481 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2482 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2483 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2484 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2485 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2486 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2487 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2488 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2490 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2490);
+  }
+  /* ./parser//parser.nit:2492 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2492);
+  }
+  /* ./parser//parser.nit:2494 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2494);
+  }
+  /* ./parser//parser.nit:2496 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2496);
+  }
+  /* ./parser//parser.nit:2498 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2498);
+  }
+  /* ./parser//parser.nit:2499 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[3]);
+  fra.me.REG[10] = fra.me.REG[3];
+  /* ./parser//parser.nit:2500 */
+  fra.me.REG[10] = NEW_AStdClassdef_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], fra.me.REG[9], fra.me.REG[10]);
+  /* ./parser//parser.nit:2510 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* ./parser//parser.nit:2511 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction47____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2511);
+  }
+  REGB0 = ATTR_parser___ReduceAction47____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction47___init(val_t p0, val_t p1, int* init_table){
+  int itpos50 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction47].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos50]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2514;
+  fra.me.meth = LOCATE_parser___ReduceAction47___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2514 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction47____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos50] = 1;
+  return;
+}
+void parser___ReduceAction48___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 = 2518;
+  fra.me.meth = LOCATE_parser___ReduceAction48___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2520 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2521 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2522 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2524 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2525 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2526 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2527 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2528 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2529 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2530 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2531 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2532 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2534 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2534);
+  }
+  /* ./parser//parser.nit:2536 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2536);
+  }
+  /* ./parser//parser.nit:2538 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2538);
+  }
+  /* ./parser//parser.nit:2540 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2540);
+  }
+  /* ./parser//parser.nit:2542 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2542);
+  }
+  /* ./parser//parser.nit:2544 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2544);
+  }
+  /* ./parser//parser.nit:2545 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
+  fra.me.REG[11] = fra.me.REG[3];
+  /* ./parser//parser.nit:2546 */
+  fra.me.REG[11] = NEW_AStdClassdef_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], fra.me.REG[10], fra.me.REG[11]);
+  /* ./parser//parser.nit:2556 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* ./parser//parser.nit:2557 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction48____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2557);
+  }
+  REGB0 = ATTR_parser___ReduceAction48____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction48___init(val_t p0, val_t p1, int* init_table){
+  int itpos51 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction48].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos51]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2560;
+  fra.me.meth = LOCATE_parser___ReduceAction48___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2560 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction48____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos51] = 1;
+  return;
+}
+void parser___ReduceAction49___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 = 2564;
+  fra.me.meth = LOCATE_parser___ReduceAction49___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2566 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2567 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2568 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2574 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2575 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2576 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2577 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2578 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2580 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2580);
+  }
+  /* ./parser//parser.nit:2582 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2582);
+  }
+  /* ./parser//parser.nit:2584 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2584);
+  }
+  /* ./parser//parser.nit:2586 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2586);
+  }
+  /* ./parser//parser.nit:2588 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2588);
+  }
+  /* ./parser//parser.nit:2589 */
+  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:2591 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2591);
+  }
+  /* ./parser//parser.nit:2592 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
+  fra.me.REG[11] = fra.me.REG[3];
+  /* ./parser//parser.nit:2593 */
+  fra.me.REG[11] = NEW_AStdClassdef_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[10], fra.me.REG[11]);
+  /* ./parser//parser.nit:2603 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* ./parser//parser.nit:2604 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction49____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2604);
+  }
+  REGB0 = ATTR_parser___ReduceAction49____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction49___init(val_t p0, val_t p1, int* init_table){
+  int itpos52 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction49].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos52]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2607;
+  fra.me.meth = LOCATE_parser___ReduceAction49___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2607 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction49____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos52] = 1;
+  return;
+}
+void parser___ReduceAction50___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 = 2611;
+  fra.me.meth = LOCATE_parser___ReduceAction50___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2613 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2614 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2615 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2616 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2617 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2618 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2619 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2620 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2621 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2622 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2623 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2624 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2625 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2626 */
+  fra.me.REG[12] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2628 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2628);
+  }
+  /* ./parser//parser.nit:2630 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2630);
+  }
+  /* ./parser//parser.nit:2632 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2632);
+  }
+  /* ./parser//parser.nit:2634 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2634);
+  }
+  /* ./parser//parser.nit:2636 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2636);
+  }
+  /* ./parser//parser.nit:2638 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2638);
+  }
+  /* ./parser//parser.nit:2639 */
+  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:2641 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2641);
+  }
+  /* ./parser//parser.nit:2642 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[3]);
+  fra.me.REG[12] = fra.me.REG[3];
+  /* ./parser//parser.nit:2643 */
+  fra.me.REG[12] = NEW_AStdClassdef_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[11], fra.me.REG[12]);
+  /* ./parser//parser.nit:2653 */
+  fra.me.REG[2] = fra.me.REG[12];
+  /* ./parser//parser.nit:2654 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction50____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2654);
+  }
+  REGB0 = ATTR_parser___ReduceAction50____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction50___init(val_t p0, val_t p1, int* init_table){
+  int itpos53 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction50].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos53]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2657;
+  fra.me.meth = LOCATE_parser___ReduceAction50___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2657 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction50____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos53] = 1;
+  return;
+}
+void parser___ReduceAction51___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 = 2661;
+  fra.me.meth = LOCATE_parser___ReduceAction51___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2663 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2664 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2665 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2666 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2667 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2668 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2669 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2670 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2671 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2672 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2673 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2674 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2675 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2677 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2677);
+  }
+  /* ./parser//parser.nit:2679 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2679);
+  }
+  /* ./parser//parser.nit:2681 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2681);
+  }
+  /* ./parser//parser.nit:2683 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2683);
+  }
+  /* ./parser//parser.nit:2685 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2685);
+  }
+  /* ./parser//parser.nit:2686 */
+  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:2688 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2688);
+  }
+  /* ./parser//parser.nit:2689 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
+  fra.me.REG[11] = fra.me.REG[3];
+  /* ./parser//parser.nit:2690 */
+  fra.me.REG[11] = NEW_AStdClassdef_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[10], fra.me.REG[11]);
+  /* ./parser//parser.nit:2700 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* ./parser//parser.nit:2701 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction51____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2701);
+  }
+  REGB0 = ATTR_parser___ReduceAction51____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction51___init(val_t p0, val_t p1, int* init_table){
+  int itpos54 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction51].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos54]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2704;
+  fra.me.meth = LOCATE_parser___ReduceAction51___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2704 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction51____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos54] = 1;
+  return;
+}
+void parser___ReduceAction52___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 = 2708;
+  fra.me.meth = LOCATE_parser___ReduceAction52___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2710 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2711 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2712 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2713 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2714 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2715 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2716 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2717 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2718 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2719 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2720 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2721 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2722 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2723 */
+  fra.me.REG[12] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2725 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2725);
+  }
+  /* ./parser//parser.nit:2727 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2727);
+  }
+  /* ./parser//parser.nit:2729 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2729);
+  }
+  /* ./parser//parser.nit:2731 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2731);
+  }
+  /* ./parser//parser.nit:2733 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2733);
+  }
+  /* ./parser//parser.nit:2735 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2735);
+  }
+  /* ./parser//parser.nit:2736 */
+  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:2738 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2738);
+  }
+  /* ./parser//parser.nit:2739 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[3]);
+  fra.me.REG[12] = fra.me.REG[3];
+  /* ./parser//parser.nit:2740 */
+  fra.me.REG[12] = NEW_AStdClassdef_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[11], fra.me.REG[12]);
+  /* ./parser//parser.nit:2750 */
+  fra.me.REG[2] = fra.me.REG[12];
+  /* ./parser//parser.nit:2751 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction52____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2751);
+  }
+  REGB0 = ATTR_parser___ReduceAction52____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction52___init(val_t p0, val_t p1, int* init_table){
+  int itpos55 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction52].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos55]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2754;
+  fra.me.meth = LOCATE_parser___ReduceAction52___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2754 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction52____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos55] = 1;
+  return;
+}
+void parser___ReduceAction53___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 = 2758;
+  fra.me.meth = LOCATE_parser___ReduceAction53___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2760 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2761 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2762 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2763 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2764 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2765 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2766 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2767 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2768 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2769 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2770 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2771 */
+  fra.me.REG[10] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2772 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2773 */
+  fra.me.REG[12] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2775 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2775);
+  }
+  /* ./parser//parser.nit:2777 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2777);
+  }
+  /* ./parser//parser.nit:2779 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2779);
+  }
+  /* ./parser//parser.nit:2781 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2781);
+  }
+  /* ./parser//parser.nit:2783 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2783);
+  }
+  /* ./parser//parser.nit:2784 */
+  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:2786 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2786);
+  }
+  /* ./parser//parser.nit:2787 */
+  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:2789 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2789);
+  }
+  /* ./parser//parser.nit:2790 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[3]);
+  fra.me.REG[12] = fra.me.REG[3];
+  /* ./parser//parser.nit:2791 */
+  fra.me.REG[12] = NEW_AStdClassdef_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[11], fra.me.REG[12]);
+  /* ./parser//parser.nit:2801 */
+  fra.me.REG[2] = fra.me.REG[12];
+  /* ./parser//parser.nit:2802 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction53____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2802);
+  }
+  REGB0 = ATTR_parser___ReduceAction53____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction53___init(val_t p0, val_t p1, int* init_table){
+  int itpos56 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction53].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos56]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2805;
+  fra.me.meth = LOCATE_parser___ReduceAction53___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2805 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction53____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos56] = 1;
+  return;
+}
+void parser___ReduceAction54___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 = 2809;
+  fra.me.meth = LOCATE_parser___ReduceAction54___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:2811 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2812 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2813 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2814 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2815 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2816 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2817 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2818 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2819 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2820 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2821 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2822 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2823 */
+  fra.me.REG[11] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2824 */
+  fra.me.REG[12] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2825 */
+  fra.me.REG[13] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2827 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2827);
+  }
+  /* ./parser//parser.nit:2829 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2829);
+  }
+  /* ./parser//parser.nit:2831 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2831);
+  }
+  /* ./parser//parser.nit:2833 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2833);
+  }
+  /* ./parser//parser.nit:2835 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2835);
+  }
+  /* ./parser//parser.nit:2837 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2837);
+  }
+  /* ./parser//parser.nit:2838 */
+  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:2840 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2840);
+  }
+  /* ./parser//parser.nit:2841 */
+  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:2843 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2843);
+  }
+  /* ./parser//parser.nit:2844 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[3]);
+  fra.me.REG[13] = fra.me.REG[3];
+  /* ./parser//parser.nit:2845 */
+  fra.me.REG[13] = NEW_AStdClassdef_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[12], fra.me.REG[13]);
+  /* ./parser//parser.nit:2855 */
+  fra.me.REG[2] = fra.me.REG[13];
+  /* ./parser//parser.nit:2856 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction54____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2856);
+  }
+  REGB0 = ATTR_parser___ReduceAction54____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction54___init(val_t p0, val_t p1, int* init_table){
+  int itpos57 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction54].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos57]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2859;
+  fra.me.meth = LOCATE_parser___ReduceAction54___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2859 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction54____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos57] = 1;
+  return;
+}
+void parser___ReduceAction55___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 = 2863;
+  fra.me.meth = LOCATE_parser___ReduceAction55___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:2865 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2866 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2868 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwclass, ID_TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2868);
+  }
+  /* ./parser//parser.nit:2869 */
+  fra.me.REG[3] = NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[3]);
+  /* ./parser//parser.nit:2872 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2873 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction55____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2873);
+  }
+  REGB0 = ATTR_parser___ReduceAction55____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction55___init(val_t p0, val_t p1, int* init_table){
+  int itpos58 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction55].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos58]) return;
+  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___ReduceAction55___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2876 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction55____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos58] = 1;
+  return;
+}
+void parser___ReduceAction56___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 = 2880;
+  fra.me.meth = LOCATE_parser___ReduceAction56___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:2882 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2883 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2884 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2886 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwabstract, ID_TKwabstract)) /*cast nullable TKwabstract*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2886);
+  }
+  /* ./parser//parser.nit:2888 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwclass, ID_TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2888);
+  }
+  /* ./parser//parser.nit:2889 */
+  fra.me.REG[3] = NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:2893 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2894 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction56____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2894);
+  }
+  REGB0 = ATTR_parser___ReduceAction56____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction56___init(val_t p0, val_t p1, int* init_table){
+  int itpos59 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction56].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos59]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2897;
+  fra.me.meth = LOCATE_parser___ReduceAction56___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2897 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction56____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos59] = 1;
+  return;
+}
+void parser___ReduceAction57___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 = 2901;
+  fra.me.meth = LOCATE_parser___ReduceAction57___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:2903 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2904 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2906 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwinterface, ID_TKwinterface)) /*cast nullable TKwinterface*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2906);
+  }
+  /* ./parser//parser.nit:2907 */
+  fra.me.REG[3] = NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[3]);
+  /* ./parser//parser.nit:2910 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2911 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction57____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2911);
+  }
+  REGB0 = ATTR_parser___ReduceAction57____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction57___init(val_t p0, val_t p1, int* init_table){
+  int itpos60 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction57].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos60]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2914;
+  fra.me.meth = LOCATE_parser___ReduceAction57___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2914 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction57____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos60] = 1;
+  return;
+}
+void parser___ReduceAction58___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 = 2918;
+  fra.me.meth = LOCATE_parser___ReduceAction58___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:2920 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2921 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2923 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwenum, ID_TKwenum)) /*cast nullable TKwenum*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2923);
+  }
+  /* ./parser//parser.nit:2924 */
+  fra.me.REG[3] = NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[3]);
+  /* ./parser//parser.nit:2927 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2928 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction58____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2928);
+  }
+  REGB0 = ATTR_parser___ReduceAction58____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction58___init(val_t p0, val_t p1, int* init_table){
+  int itpos61 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction58].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos61]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2931;
+  fra.me.meth = LOCATE_parser___ReduceAction58___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2931 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction58____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos61] = 1;
+  return;
+}
+void parser___ReduceAction59___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 = 2935;
+  fra.me.meth = LOCATE_parser___ReduceAction59___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:2937 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2938 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2939 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2940 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2941 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2942 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2943 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2945 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:2946 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:2948 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:2949 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction59____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2949);
+  }
+  REGB0 = ATTR_parser___ReduceAction59____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction59___init(val_t p0, val_t p1, int* init_table){
+  int itpos62 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction59].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos62]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2952;
+  fra.me.meth = LOCATE_parser___ReduceAction59___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2952 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction59____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos62] = 1;
+  return;
+}
+void parser___ReduceAction60___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 = 2956;
+  fra.me.meth = LOCATE_parser___ReduceAction60___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:2958 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2959 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2960 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2961 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2962 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2963 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2964 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2965 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:2968 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2968);
+  }
+  /* ./parser//parser.nit:2969 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:2970 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:2972 */
+  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:2973 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:2974 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction60____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2974);
+  }
+  REGB0 = ATTR_parser___ReduceAction60____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction60___init(val_t p0, val_t p1, int* init_table){
+  int itpos63 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction60].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos63]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2977;
+  fra.me.meth = LOCATE_parser___ReduceAction60___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2977 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction60____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos63] = 1;
+  return;
+}
+void parser___ReduceAction61___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 = 2981;
+  fra.me.meth = LOCATE_parser___ReduceAction61___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:2983 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2984 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2985 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2986 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:2988 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:2989 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction61____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2989);
+  }
+  REGB0 = ATTR_parser___ReduceAction61____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction61___init(val_t p0, val_t p1, int* init_table){
+  int itpos64 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction61].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos64]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2992;
+  fra.me.meth = LOCATE_parser___ReduceAction61___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:2992 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction61____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos64] = 1;
+  return;
+}
+void parser___ReduceAction62___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 = 2996;
+  fra.me.meth = LOCATE_parser___ReduceAction62___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:2998 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:2999 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3001 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3001);
+  }
+  /* ./parser//parser.nit:3002 */
+  fra.me.REG[3] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:3006 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3007 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction62____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3007);
+  }
+  REGB0 = ATTR_parser___ReduceAction62____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction62___init(val_t p0, val_t p1, int* init_table){
+  int itpos65 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction62].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos65]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3010;
+  fra.me.meth = LOCATE_parser___ReduceAction62___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3010 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction62____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos65] = 1;
+  return;
+}
+void parser___ReduceAction63___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 = 3014;
+  fra.me.meth = LOCATE_parser___ReduceAction63___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:3016 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3017 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3018 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3020 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3020);
+  }
+  /* ./parser//parser.nit:3022 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3022);
+  }
+  /* ./parser//parser.nit:3023 */
+  fra.me.REG[3] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:3027 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3028 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction63____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3028);
+  }
+  REGB0 = ATTR_parser___ReduceAction63____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction63___init(val_t p0, val_t p1, int* init_table){
+  int itpos66 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction63].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos66]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3031;
+  fra.me.meth = LOCATE_parser___ReduceAction63___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3031 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction63____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos66] = 1;
+  return;
+}
+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 = 3035;
+  fra.me.meth = LOCATE_parser___ReduceAction64___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:3037 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3038 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3039 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3040 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3041 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3043 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwspecial, ID_TKwspecial)) /*cast nullable TKwspecial*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3043);
+  }
+  /* ./parser//parser.nit:3045 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3045);
+  }
+  /* ./parser//parser.nit:3046 */
+  fra.me.REG[3] = NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:3051 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3052 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction64____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3052);
+  }
+  REGB0 = ATTR_parser___ReduceAction64____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction64___init(val_t p0, val_t p1, int* init_table){
+  int itpos67 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction64].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos67]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3055;
+  fra.me.meth = LOCATE_parser___ReduceAction64___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3055 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction64____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos67] = 1;
+  return;
+}
+void parser___ReduceAction65___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 = 3059;
+  fra.me.meth = LOCATE_parser___ReduceAction65___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:3061 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3062 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3063 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3064 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3065 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3067 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwsuper, ID_TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3067);
+  }
+  /* ./parser//parser.nit:3069 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3069);
+  }
+  /* ./parser//parser.nit:3070 */
+  fra.me.REG[3] = NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:3075 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3076 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction65____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3076);
+  }
+  REGB0 = ATTR_parser___ReduceAction65____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction65___init(val_t p0, val_t p1, int* init_table){
+  int itpos68 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction65].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos68]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3079;
+  fra.me.meth = LOCATE_parser___ReduceAction65___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3079 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction65____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos68] = 1;
+  return;
+}
+void parser___ReduceAction66___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 = 3083;
+  fra.me.meth = LOCATE_parser___ReduceAction66___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:3085 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3086 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3087 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3089 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3090 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction66____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3090);
+  }
+  REGB0 = ATTR_parser___ReduceAction66____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction66___init(val_t p0, val_t p1, int* init_table){
+  int itpos69 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction66].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos69]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3093;
+  fra.me.meth = LOCATE_parser___ReduceAction66___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3093 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction66____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos69] = 1;
+  return;
+}
+void parser___ReduceAction67___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 = 3097;
+  fra.me.meth = LOCATE_parser___ReduceAction67___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3099 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3100 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3101 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3102 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3103 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3104 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3105 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3106 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3108 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3108);
+  }
+  /* ./parser//parser.nit:3110 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3110);
+  }
+  /* ./parser//parser.nit:3112 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3112);
+  }
+  /* ./parser//parser.nit:3114 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3114);
+  }
+  /* ./parser//parser.nit:3116 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3116);
+  }
+  /* ./parser//parser.nit:3118 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3118);
+  }
+  /* ./parser//parser.nit:3119 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_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:3128 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3129 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction67____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3129);
+  }
+  REGB0 = ATTR_parser___ReduceAction67____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction67___init(val_t p0, val_t p1, int* init_table){
+  int itpos70 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction67].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos70]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3132;
+  fra.me.meth = LOCATE_parser___ReduceAction67___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3132 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction67____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos70] = 1;
+  return;
+}
+void parser___ReduceAction68___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 = 3136;
+  fra.me.meth = LOCATE_parser___ReduceAction68___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3138 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3139 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3140 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3141 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3142 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3143 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3144 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3145 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3146 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3148 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3148);
+  }
+  /* ./parser//parser.nit:3150 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3150);
+  }
+  /* ./parser//parser.nit:3152 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3152);
+  }
+  /* ./parser//parser.nit:3154 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3154);
+  }
+  /* ./parser//parser.nit:3156 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3156);
+  }
+  /* ./parser//parser.nit:3158 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3158);
+  }
+  /* ./parser//parser.nit:3160 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3160);
+  }
+  /* ./parser//parser.nit:3161 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_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:3170 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3171 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction68____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3171);
+  }
+  REGB0 = ATTR_parser___ReduceAction68____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction68___init(val_t p0, val_t p1, int* init_table){
+  int itpos71 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction68].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos71]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3174;
+  fra.me.meth = LOCATE_parser___ReduceAction68___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3174 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction68____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos71] = 1;
+  return;
+}
+void parser___ReduceAction69___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 = 3178;
+  fra.me.meth = LOCATE_parser___ReduceAction69___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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: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[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3183 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3184 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3185 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3186 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3187 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3188 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3190 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3190);
+  }
+  /* ./parser//parser.nit:3192 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3192);
+  }
+  /* ./parser//parser.nit:3194 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3194);
+  }
+  /* ./parser//parser.nit:3196 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3196);
+  }
+  /* ./parser//parser.nit:3198 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3198);
+  }
+  /* ./parser//parser.nit:3200 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3200);
+  }
+  /* ./parser//parser.nit:3201 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_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:3210 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3211 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction69____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3211);
+  }
+  REGB0 = ATTR_parser___ReduceAction69____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction69___init(val_t p0, val_t p1, int* init_table){
+  int itpos72 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction69].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos72]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3214;
+  fra.me.meth = LOCATE_parser___ReduceAction69___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3214 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction69____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos72] = 1;
+  return;
+}
+void parser___ReduceAction70___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 = 3218;
+  fra.me.meth = LOCATE_parser___ReduceAction70___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3220 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3221 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3222 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3223 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3224 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3225 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3226 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3227 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3228 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3229 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3231 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3231);
+  }
+  /* ./parser//parser.nit:3233 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3233);
+  }
+  /* ./parser//parser.nit:3235 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3235);
+  }
+  /* ./parser//parser.nit:3237 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3237);
+  }
+  /* ./parser//parser.nit:3239 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3239);
+  }
+  /* ./parser//parser.nit:3241 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3241);
+  }
+  /* ./parser//parser.nit:3243 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3243);
+  }
+  /* ./parser//parser.nit:3244 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_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:3253 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3254 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction70____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3254);
+  }
+  REGB0 = ATTR_parser___ReduceAction70____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction70___init(val_t p0, val_t p1, int* init_table){
+  int itpos73 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction70].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos73]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3257;
+  fra.me.meth = LOCATE_parser___ReduceAction70___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3257 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction70____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos73] = 1;
+  return;
+}
+void parser___ReduceAction71___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 = 3261;
+  fra.me.meth = LOCATE_parser___ReduceAction71___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3263 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3264 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3265 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3266 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3267 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3268 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3269 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3270 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3271 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3273 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3273);
+  }
+  /* ./parser//parser.nit:3275 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3275);
+  }
+  /* ./parser//parser.nit:3277 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3277);
+  }
+  /* ./parser//parser.nit:3279 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3279);
+  }
+  /* ./parser//parser.nit:3281 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3281);
+  }
+  /* ./parser//parser.nit:3283 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3283);
+  }
+  /* ./parser//parser.nit:3284 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_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:3293 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3294 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction71____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3294);
+  }
+  REGB0 = ATTR_parser___ReduceAction71____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction71___init(val_t p0, val_t p1, int* init_table){
+  int itpos74 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction71].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos74]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3297;
+  fra.me.meth = LOCATE_parser___ReduceAction71___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3297 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction71____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos74] = 1;
+  return;
+}
+void parser___ReduceAction72___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 = 3301;
+  fra.me.meth = LOCATE_parser___ReduceAction72___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3303 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3304 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3305 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3306 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3307 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3308 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3309 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3310 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3311 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3312 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3314 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3314);
+  }
+  /* ./parser//parser.nit:3316 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3316);
+  }
+  /* ./parser//parser.nit:3318 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3318);
+  }
+  /* ./parser//parser.nit:3320 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3320);
+  }
+  /* ./parser//parser.nit:3322 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3322);
+  }
+  /* ./parser//parser.nit:3324 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3324);
+  }
+  /* ./parser//parser.nit:3326 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3326);
+  }
+  /* ./parser//parser.nit:3327 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_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:3336 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3337 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction72____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3337);
+  }
+  REGB0 = ATTR_parser___ReduceAction72____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction72___init(val_t p0, val_t p1, int* init_table){
+  int itpos75 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction72].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos75]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3340;
+  fra.me.meth = LOCATE_parser___ReduceAction72___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3340 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction72____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos75] = 1;
+  return;
+}
+void parser___ReduceAction73___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 = 3344;
+  fra.me.meth = LOCATE_parser___ReduceAction73___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3346 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3347 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3348 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3351 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3352 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3353 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3355 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3355);
+  }
+  /* ./parser//parser.nit:3357 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3357);
+  }
+  /* ./parser//parser.nit:3359 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3359);
+  }
+  /* ./parser//parser.nit:3361 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3361);
+  }
+  /* ./parser//parser.nit:3363 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3363);
+  }
+  /* ./parser//parser.nit:3364 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_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:3372 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3373 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction73____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3373);
+  }
+  REGB0 = ATTR_parser___ReduceAction73____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction73___init(val_t p0, val_t p1, int* init_table){
+  int itpos76 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction73].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos76]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3376;
+  fra.me.meth = LOCATE_parser___ReduceAction73___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3376 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction73____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos76] = 1;
+  return;
+}
+void parser___ReduceAction74___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 = 3380;
+  fra.me.meth = LOCATE_parser___ReduceAction74___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3382 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3383 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3384 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3385 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3386 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3387 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3388 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3389 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3390 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3392 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3392);
+  }
+  /* ./parser//parser.nit:3394 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3394);
+  }
+  /* ./parser//parser.nit:3396 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3396);
+  }
+  /* ./parser//parser.nit:3398 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3398);
+  }
+  /* ./parser//parser.nit:3400 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3400);
+  }
+  /* ./parser//parser.nit:3402 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3402);
+  }
+  /* ./parser//parser.nit:3403 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_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:3411 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3412 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction74____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3412);
+  }
+  REGB0 = ATTR_parser___ReduceAction74____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction74___init(val_t p0, val_t p1, int* init_table){
+  int itpos77 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction74].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos77]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3415;
+  fra.me.meth = LOCATE_parser___ReduceAction74___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3415 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction74____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos77] = 1;
+  return;
+}
+void parser___ReduceAction75___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 = 3419;
+  fra.me.meth = LOCATE_parser___ReduceAction75___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3421 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3422 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3423 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3424 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3425 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3426 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3427 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3428 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3430 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3430);
+  }
+  /* ./parser//parser.nit:3432 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3432);
+  }
+  /* ./parser//parser.nit:3434 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3434);
+  }
+  /* ./parser//parser.nit:3436 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3436);
+  }
+  /* ./parser//parser.nit:3438 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3438);
+  }
+  /* ./parser//parser.nit:3439 */
+  fra.me.REG[3] = NEW_AInternMethPropdef_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:3447 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3448 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction75____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3448);
+  }
+  REGB0 = ATTR_parser___ReduceAction75____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction75___init(val_t p0, val_t p1, int* init_table){
+  int itpos78 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction75].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos78]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3451;
+  fra.me.meth = LOCATE_parser___ReduceAction75___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3451 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction75____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos78] = 1;
+  return;
+}
+void parser___ReduceAction76___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 = 3455;
+  fra.me.meth = LOCATE_parser___ReduceAction76___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3457 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3458 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3459 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3460 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3461 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3462 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3463 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3464 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3465 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3467 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3467);
+  }
+  /* ./parser//parser.nit:3469 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3469);
+  }
+  /* ./parser//parser.nit:3471 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3471);
+  }
+  /* ./parser//parser.nit:3473 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3473);
+  }
+  /* ./parser//parser.nit:3475 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3475);
+  }
+  /* ./parser//parser.nit:3477 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3477);
+  }
+  /* ./parser//parser.nit:3478 */
+  fra.me.REG[3] = NEW_AInternMethPropdef_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:3486 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3487 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction76____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3487);
+  }
+  REGB0 = ATTR_parser___ReduceAction76____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction76___init(val_t p0, val_t p1, int* init_table){
+  int itpos79 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction76].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos79]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3490;
+  fra.me.meth = LOCATE_parser___ReduceAction76___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3490 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction76____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos79] = 1;
+  return;
+}
+void parser___ReduceAction77___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 = 3494;
+  fra.me.meth = LOCATE_parser___ReduceAction77___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3496 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3497 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3498 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3499 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3500 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3501 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3502 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3503 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3505 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3505);
+  }
+  /* ./parser//parser.nit:3507 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3507);
+  }
+  /* ./parser//parser.nit:3509 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3509);
+  }
+  /* ./parser//parser.nit:3511 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3511);
+  }
+  /* ./parser//parser.nit:3513 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3513);
+  }
+  /* ./parser//parser.nit:3514 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_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);
+  /* ./parser//parser.nit:3523 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3524 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction77____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3524);
+  }
+  REGB0 = ATTR_parser___ReduceAction77____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction77___init(val_t p0, val_t p1, int* init_table){
+  int itpos80 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction77].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos80]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3527;
+  fra.me.meth = LOCATE_parser___ReduceAction77___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3527 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction77____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos80] = 1;
+  return;
+}
+void parser___ReduceAction78___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 = 3531;
+  fra.me.meth = LOCATE_parser___ReduceAction78___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3533 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3534 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3535 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3536 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3537 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3538 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3539 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3540 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3541 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3543 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3543);
+  }
+  /* ./parser//parser.nit:3545 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3545);
+  }
+  /* ./parser//parser.nit:3547 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3547);
+  }
+  /* ./parser//parser.nit:3549 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3549);
+  }
+  /* ./parser//parser.nit:3551 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3551);
+  }
+  /* ./parser//parser.nit:3553 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3553);
+  }
+  /* ./parser//parser.nit:3554 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_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);
+  /* ./parser//parser.nit:3563 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3564 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction78____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3564);
+  }
+  REGB0 = ATTR_parser___ReduceAction78____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction78___init(val_t p0, val_t p1, int* init_table){
+  int itpos81 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction78].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos81]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3567;
+  fra.me.meth = LOCATE_parser___ReduceAction78___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3567 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction78____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos81] = 1;
+  return;
+}
+void parser___ReduceAction79___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 = 3571;
+  fra.me.meth = LOCATE_parser___ReduceAction79___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3573 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3574 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3575 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3576 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3577 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3578 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3579 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3580 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3581 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3583 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3583);
+  }
+  /* ./parser//parser.nit:3585 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3585);
+  }
+  /* ./parser//parser.nit:3587 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3587);
+  }
+  /* ./parser//parser.nit:3589 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3589);
+  }
+  /* ./parser//parser.nit:3591 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3591);
+  }
+  /* ./parser//parser.nit:3593 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TString, ID_TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3593);
+  }
+  /* ./parser//parser.nit:3594 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_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]);
+  /* ./parser//parser.nit:3603 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3604 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction79____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3604);
+  }
+  REGB0 = ATTR_parser___ReduceAction79____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction79___init(val_t p0, val_t p1, int* init_table){
+  int itpos82 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction79].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos82]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3607;
+  fra.me.meth = LOCATE_parser___ReduceAction79___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3607 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction79____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos82] = 1;
+  return;
+}
+void parser___ReduceAction80___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 = 3611;
+  fra.me.meth = LOCATE_parser___ReduceAction80___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3613 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3614 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3615 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3616 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3617 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3618 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3619 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3620 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3621 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3622 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3624 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3624);
+  }
+  /* ./parser//parser.nit:3626 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3626);
+  }
+  /* ./parser//parser.nit:3628 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3628);
+  }
+  /* ./parser//parser.nit:3630 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3630);
+  }
+  /* ./parser//parser.nit:3632 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3632);
+  }
+  /* ./parser//parser.nit:3634 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3634);
+  }
+  /* ./parser//parser.nit:3636 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TString, ID_TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3636);
+  }
+  /* ./parser//parser.nit:3637 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_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]);
+  /* ./parser//parser.nit:3646 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3647 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction80____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3647);
+  }
+  REGB0 = ATTR_parser___ReduceAction80____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction80___init(val_t p0, val_t p1, int* init_table){
+  int itpos83 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction80].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos83]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3650;
+  fra.me.meth = LOCATE_parser___ReduceAction80___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3650 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction80____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos83] = 1;
+  return;
+}
+void parser___ReduceAction81___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 = 3654;
+  fra.me.meth = LOCATE_parser___ReduceAction81___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:3656 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3657 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3658 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3659 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3660 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3662 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3662);
+  }
+  /* ./parser//parser.nit:3664 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3664);
+  }
+  /* ./parser//parser.nit:3666 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3666);
+  }
+  /* ./parser//parser.nit:3668 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3668);
+  }
+  /* ./parser//parser.nit:3669 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3681 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3682 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction81____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3682);
+  }
+  REGB0 = ATTR_parser___ReduceAction81____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction81___init(val_t p0, val_t p1, int* init_table){
+  int itpos84 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction81].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos84]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3685;
+  fra.me.meth = LOCATE_parser___ReduceAction81___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3685 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction81____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos84] = 1;
+  return;
+}
+void parser___ReduceAction82___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 = 3689;
+  fra.me.meth = LOCATE_parser___ReduceAction82___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3691 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3692 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3693 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3694 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3695 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3696 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3698 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3698);
+  }
+  /* ./parser//parser.nit:3700 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3700);
+  }
+  /* ./parser//parser.nit:3702 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3702);
+  }
+  /* ./parser//parser.nit:3704 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3704);
+  }
+  /* ./parser//parser.nit:3706 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3706);
+  }
+  /* ./parser//parser.nit:3707 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3719 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3720 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction82____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3720);
+  }
+  REGB0 = ATTR_parser___ReduceAction82____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction82___init(val_t p0, val_t p1, int* init_table){
+  int itpos85 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction82].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos85]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3723;
+  fra.me.meth = LOCATE_parser___ReduceAction82___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3723 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction82____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos85] = 1;
+  return;
+}
+void parser___ReduceAction83___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 = 3727;
+  fra.me.meth = LOCATE_parser___ReduceAction83___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3729 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3730 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3731 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3732 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3733 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3734 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3736 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3736);
+  }
+  /* ./parser//parser.nit:3738 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3738);
+  }
+  /* ./parser//parser.nit:3740 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3740);
+  }
+  /* ./parser//parser.nit:3742 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3742);
+  }
+  /* ./parser//parser.nit:3744 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3744);
+  }
+  /* ./parser//parser.nit:3745 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3757 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3758 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction83____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3758);
+  }
+  REGB0 = ATTR_parser___ReduceAction83____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction83___init(val_t p0, val_t p1, int* init_table){
+  int itpos86 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction83].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos86]) return;
+  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___ReduceAction83___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3761 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction83____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos86] = 1;
+  return;
+}
+void parser___ReduceAction84___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 = 3765;
+  fra.me.meth = LOCATE_parser___ReduceAction84___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3767 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3768 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3769 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3770 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3771 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3772 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3773 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3775 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3775);
+  }
+  /* ./parser//parser.nit:3777 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3777);
+  }
+  /* ./parser//parser.nit:3779 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3779);
+  }
+  /* ./parser//parser.nit:3781 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3781);
+  }
+  /* ./parser//parser.nit:3783 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3783);
+  }
+  /* ./parser//parser.nit:3785 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3785);
+  }
+  /* ./parser//parser.nit:3786 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3798 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3799 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction84____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3799);
+  }
+  REGB0 = ATTR_parser___ReduceAction84____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction84___init(val_t p0, val_t p1, int* init_table){
+  int itpos87 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction84].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos87]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3802;
+  fra.me.meth = LOCATE_parser___ReduceAction84___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3802 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction84____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos87] = 1;
+  return;
+}
+void parser___ReduceAction85___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 = 3806;
+  fra.me.meth = LOCATE_parser___ReduceAction85___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3808 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3809 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3810 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3811 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3812 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3813 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3815 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3815);
+  }
+  /* ./parser//parser.nit:3817 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3817);
+  }
+  /* ./parser//parser.nit:3819 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3819);
+  }
+  /* ./parser//parser.nit:3821 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3821);
+  }
+  /* ./parser//parser.nit:3823 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3823);
+  }
+  /* ./parser//parser.nit:3824 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3836 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3837 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction85____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3837);
+  }
+  REGB0 = ATTR_parser___ReduceAction85____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction85___init(val_t p0, val_t p1, int* init_table){
+  int itpos88 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction85].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos88]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3840;
+  fra.me.meth = LOCATE_parser___ReduceAction85___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3840 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction85____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos88] = 1;
+  return;
+}
+void parser___ReduceAction86___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 = 3844;
+  fra.me.meth = LOCATE_parser___ReduceAction86___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3846 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3847 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3848 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3849 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3850 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3851 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3852 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3854 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3854);
+  }
+  /* ./parser//parser.nit:3856 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3856);
+  }
+  /* ./parser//parser.nit:3858 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3858);
+  }
+  /* ./parser//parser.nit:3860 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3860);
+  }
+  /* ./parser//parser.nit:3862 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3862);
+  }
+  /* ./parser//parser.nit:3864 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3864);
+  }
+  /* ./parser//parser.nit:3865 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3877 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3878 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction86____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3878);
+  }
+  REGB0 = ATTR_parser___ReduceAction86____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction86___init(val_t p0, val_t p1, int* init_table){
+  int itpos89 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction86].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos89]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3881;
+  fra.me.meth = LOCATE_parser___ReduceAction86___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3881 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction86____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos89] = 1;
+  return;
+}
+void parser___ReduceAction87___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 = 3885;
+  fra.me.meth = LOCATE_parser___ReduceAction87___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3887 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3888 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3889 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3890 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3891 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3892 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3893 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3895 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3895);
+  }
+  /* ./parser//parser.nit:3897 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3897);
+  }
+  /* ./parser//parser.nit:3899 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3899);
+  }
+  /* ./parser//parser.nit:3901 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3901);
+  }
+  /* ./parser//parser.nit:3903 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3903);
+  }
+  /* ./parser//parser.nit:3905 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3905);
+  }
+  /* ./parser//parser.nit:3906 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3918 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3919 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction87____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3919);
+  }
+  REGB0 = ATTR_parser___ReduceAction87____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction87___init(val_t p0, val_t p1, int* init_table){
+  int itpos90 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction87].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos90]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3922;
+  fra.me.meth = LOCATE_parser___ReduceAction87___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3922 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction87____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos90] = 1;
+  return;
+}
+void parser___ReduceAction88___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 = 3926;
+  fra.me.meth = LOCATE_parser___ReduceAction88___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3928 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3929 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3930 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3931 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3932 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3933 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3934 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3935 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3937 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3937);
+  }
+  /* ./parser//parser.nit:3939 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3939);
+  }
+  /* ./parser//parser.nit:3941 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3941);
+  }
+  /* ./parser//parser.nit:3943 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3943);
+  }
+  /* ./parser//parser.nit:3945 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3945);
+  }
+  /* ./parser//parser.nit:3947 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3947);
+  }
+  /* ./parser//parser.nit:3949 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3949);
+  }
+  /* ./parser//parser.nit:3950 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:3962 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:3963 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction88____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3963);
+  }
+  REGB0 = ATTR_parser___ReduceAction88____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction88___init(val_t p0, val_t p1, int* init_table){
+  int itpos91 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction88].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos91]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3966;
+  fra.me.meth = LOCATE_parser___ReduceAction88___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:3966 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction88____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos91] = 1;
+  return;
+}
+void parser___ReduceAction89___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 = 3970;
+  fra.me.meth = LOCATE_parser___ReduceAction89___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:3972 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:3973 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3974 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3975 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3976 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3977 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:3979 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3979);
+  }
+  /* ./parser//parser.nit:3981 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3981);
+  }
+  /* ./parser//parser.nit:3983 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3983);
+  }
+  /* ./parser//parser.nit:3985 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3985);
+  }
+  /* ./parser//parser.nit:3987 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3987);
+  }
+  /* ./parser//parser.nit:3988 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4000 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4001 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction89____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4001);
+  }
+  REGB0 = ATTR_parser___ReduceAction89____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction89___init(val_t p0, val_t p1, int* init_table){
+  int itpos92 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction89].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos92]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4004;
+  fra.me.meth = LOCATE_parser___ReduceAction89___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4004 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction89____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos92] = 1;
+  return;
+}
+void parser___ReduceAction90___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 = 4008;
+  fra.me.meth = LOCATE_parser___ReduceAction90___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4010 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4011 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4012 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4013 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4014 */
+  fra.me.REG[6] = 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:4018 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4018);
+  }
+  /* ./parser//parser.nit:4020 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4020);
+  }
+  /* ./parser//parser.nit:4022 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4022);
+  }
+  /* ./parser//parser.nit:4024 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4024);
+  }
+  /* ./parser//parser.nit:4026 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4026);
+  }
+  /* ./parser//parser.nit:4028 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4028);
+  }
+  /* ./parser//parser.nit:4029 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4041 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4042 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction90____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4042);
+  }
+  REGB0 = ATTR_parser___ReduceAction90____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction90___init(val_t p0, val_t p1, int* init_table){
+  int itpos93 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction90].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos93]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4045;
+  fra.me.meth = LOCATE_parser___ReduceAction90___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4045 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction90____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos93] = 1;
+  return;
+}
+void parser___ReduceAction91___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 = 4049;
+  fra.me.meth = LOCATE_parser___ReduceAction91___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4051 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4052 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4053 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4054 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4055 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4056 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4057 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4059 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4059);
+  }
+  /* ./parser//parser.nit:4061 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4061);
+  }
+  /* ./parser//parser.nit:4063 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4063);
+  }
+  /* ./parser//parser.nit:4065 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4065);
+  }
+  /* ./parser//parser.nit:4067 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4067);
+  }
+  /* ./parser//parser.nit:4069 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4069);
+  }
+  /* ./parser//parser.nit:4070 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4082 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4083 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction91____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4083);
+  }
+  REGB0 = ATTR_parser___ReduceAction91____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction91___init(val_t p0, val_t p1, int* init_table){
+  int itpos94 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction91].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos94]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4086;
+  fra.me.meth = LOCATE_parser___ReduceAction91___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4086 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction91____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos94] = 1;
+  return;
+}
+void parser___ReduceAction92___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 = 4090;
+  fra.me.meth = LOCATE_parser___ReduceAction92___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4092 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4093 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4094 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4095 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4096 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4097 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4098 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4099 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4101 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4101);
+  }
+  /* ./parser//parser.nit:4103 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4103);
+  }
+  /* ./parser//parser.nit:4105 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4105);
+  }
+  /* ./parser//parser.nit:4107 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4107);
+  }
+  /* ./parser//parser.nit:4109 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4109);
+  }
+  /* ./parser//parser.nit:4111 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4111);
+  }
+  /* ./parser//parser.nit:4113 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4113);
+  }
+  /* ./parser//parser.nit:4114 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4126 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4127 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction92____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4127);
+  }
+  REGB0 = ATTR_parser___ReduceAction92____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction92___init(val_t p0, val_t p1, int* init_table){
+  int itpos95 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction92].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos95]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4130;
+  fra.me.meth = LOCATE_parser___ReduceAction92___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4130 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction92____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos95] = 1;
+  return;
+}
+void parser___ReduceAction93___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 = 4134;
+  fra.me.meth = LOCATE_parser___ReduceAction93___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4136 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4137 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4138 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4139 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4140 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4141 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4142 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4144 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4144);
+  }
+  /* ./parser//parser.nit:4146 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4146);
+  }
+  /* ./parser//parser.nit:4148 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4148);
+  }
+  /* ./parser//parser.nit:4150 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4150);
+  }
+  /* ./parser//parser.nit:4152 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4152);
+  }
+  /* ./parser//parser.nit:4154 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4154);
+  }
+  /* ./parser//parser.nit:4155 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4167 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4168 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction93____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4168);
+  }
+  REGB0 = ATTR_parser___ReduceAction93____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction93___init(val_t p0, val_t p1, int* init_table){
+  int itpos96 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction93].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos96]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4171;
+  fra.me.meth = LOCATE_parser___ReduceAction93___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4171 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction93____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos96] = 1;
+  return;
+}
+void parser___ReduceAction94___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 = 4175;
+  fra.me.meth = LOCATE_parser___ReduceAction94___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4177 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4178 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4179 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4180 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4181 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4182 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4183 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4184 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4186 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4186);
+  }
+  /* ./parser//parser.nit:4188 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4188);
+  }
+  /* ./parser//parser.nit:4190 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4190);
+  }
+  /* ./parser//parser.nit:4192 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4192);
+  }
+  /* ./parser//parser.nit:4194 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4194);
+  }
+  /* ./parser//parser.nit:4196 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4196);
+  }
+  /* ./parser//parser.nit:4198 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4198);
+  }
+  /* ./parser//parser.nit:4199 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4211 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4212 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction94____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4212);
+  }
+  REGB0 = ATTR_parser___ReduceAction94____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction94___init(val_t p0, val_t p1, int* init_table){
+  int itpos97 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction94].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos97]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4215;
+  fra.me.meth = LOCATE_parser___ReduceAction94___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4215 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction94____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos97] = 1;
+  return;
+}
+void parser___ReduceAction95___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 = 4219;
+  fra.me.meth = LOCATE_parser___ReduceAction95___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4221 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4222 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4223 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4224 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4225 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4226 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4227 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4228 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4230 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4230);
+  }
+  /* ./parser//parser.nit:4232 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4232);
+  }
+  /* ./parser//parser.nit:4234 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4234);
+  }
+  /* ./parser//parser.nit:4236 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4236);
+  }
+  /* ./parser//parser.nit:4238 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4238);
+  }
+  /* ./parser//parser.nit:4240 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4240);
+  }
+  /* ./parser//parser.nit:4242 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4242);
+  }
+  /* ./parser//parser.nit:4243 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4255 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4256 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction95____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4256);
+  }
+  REGB0 = ATTR_parser___ReduceAction95____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction95___init(val_t p0, val_t p1, int* init_table){
+  int itpos98 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction95].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos98]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4259;
+  fra.me.meth = LOCATE_parser___ReduceAction95___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4259 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction95____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos98] = 1;
+  return;
+}
+void parser___ReduceAction96___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 = 4263;
+  fra.me.meth = LOCATE_parser___ReduceAction96___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4265 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4266 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4267 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4268 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4269 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4270 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4271 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4272 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4273 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4275 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4275);
+  }
+  /* ./parser//parser.nit:4277 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4277);
+  }
+  /* ./parser//parser.nit:4279 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4279);
+  }
+  /* ./parser//parser.nit:4281 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4281);
+  }
+  /* ./parser//parser.nit:4283 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4283);
+  }
+  /* ./parser//parser.nit:4285 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4285);
+  }
+  /* ./parser//parser.nit:4287 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4287);
+  }
+  /* ./parser//parser.nit:4289 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4289);
+  }
+  /* ./parser//parser.nit:4290 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4302 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4303 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction96____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4303);
+  }
+  REGB0 = ATTR_parser___ReduceAction96____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction96___init(val_t p0, val_t p1, int* init_table){
+  int itpos99 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction96].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos99]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4306;
+  fra.me.meth = LOCATE_parser___ReduceAction96___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4306 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction96____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos99] = 1;
+  return;
+}
+void parser___ReduceAction97___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 = 4310;
+  fra.me.meth = LOCATE_parser___ReduceAction97___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4312 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4313 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4314 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4315 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4316 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4317 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4318 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4319 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4321 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_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[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_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[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4325);
+  }
+  /* ./parser//parser.nit:4327 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4327);
+  }
+  /* ./parser//parser.nit:4329 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4329);
+  }
+  /* ./parser//parser.nit:4330 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4342 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4343 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction97____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4343);
+  }
+  REGB0 = ATTR_parser___ReduceAction97____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction97___init(val_t p0, val_t p1, int* init_table){
+  int itpos100 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction97].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos100]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4346;
+  fra.me.meth = LOCATE_parser___ReduceAction97___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4346 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction97____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos100] = 1;
+  return;
+}
+void parser___ReduceAction98___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 = 4350;
+  fra.me.meth = LOCATE_parser___ReduceAction98___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4352 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4353 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4354 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4355 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4356 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4357 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4358 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4359 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4360 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4362 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4362);
+  }
+  /* ./parser//parser.nit:4364 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4364);
+  }
+  /* ./parser//parser.nit:4366 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4366);
+  }
+  /* ./parser//parser.nit:4368 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4368);
+  }
+  /* ./parser//parser.nit:4370 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4370);
+  }
+  /* ./parser//parser.nit:4372 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4372);
+  }
+  /* ./parser//parser.nit:4373 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4385 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4386 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction98____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4386);
+  }
+  REGB0 = ATTR_parser___ReduceAction98____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction98___init(val_t p0, val_t p1, int* init_table){
+  int itpos101 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction98].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos101]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4389;
+  fra.me.meth = LOCATE_parser___ReduceAction98___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4389 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction98____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos101] = 1;
+  return;
+}
+void parser___ReduceAction99___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 = 4393;
+  fra.me.meth = LOCATE_parser___ReduceAction99___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4395 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4396 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4397 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4398 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4399 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4400 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4401 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4402 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4403 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4405 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4405);
+  }
+  /* ./parser//parser.nit:4407 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4407);
+  }
+  /* ./parser//parser.nit:4409 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4409);
+  }
+  /* ./parser//parser.nit:4411 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4411);
+  }
+  /* ./parser//parser.nit:4413 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4413);
+  }
+  /* ./parser//parser.nit:4415 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4415);
+  }
+  /* ./parser//parser.nit:4416 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4428 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4429 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction99____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4429);
+  }
+  REGB0 = ATTR_parser___ReduceAction99____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction99___init(val_t p0, val_t p1, int* init_table){
+  int itpos102 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction99].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos102]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4432;
+  fra.me.meth = LOCATE_parser___ReduceAction99___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4432 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction99____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos102] = 1;
+  return;
+}
+void parser___ReduceAction100___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 = 4436;
+  fra.me.meth = LOCATE_parser___ReduceAction100___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4438 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4439 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4440 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4441 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4442 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4443 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4444 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4445 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4446 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4447 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4449 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4449);
+  }
+  /* ./parser//parser.nit:4451 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4451);
+  }
+  /* ./parser//parser.nit:4453 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4453);
+  }
+  /* ./parser//parser.nit:4455 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4455);
+  }
+  /* ./parser//parser.nit:4457 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4457);
+  }
+  /* ./parser//parser.nit:4459 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4459);
+  }
+  /* ./parser//parser.nit:4461 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4461);
+  }
+  /* ./parser//parser.nit:4462 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4474 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4475 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction100____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4475);
+  }
+  REGB0 = ATTR_parser___ReduceAction100____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction100___init(val_t p0, val_t p1, int* init_table){
+  int itpos103 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction100].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos103]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4478;
+  fra.me.meth = LOCATE_parser___ReduceAction100___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4478 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction100____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos103] = 1;
+  return;
+}
+void parser___ReduceAction101___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 = 4482;
+  fra.me.meth = LOCATE_parser___ReduceAction101___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4484 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4485 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4486 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4487 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4488 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4489 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4490 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4491 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4492 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4494 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4494);
+  }
+  /* ./parser//parser.nit:4496 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4496);
+  }
+  /* ./parser//parser.nit:4498 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4498);
+  }
+  /* ./parser//parser.nit:4500 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4500);
+  }
+  /* ./parser//parser.nit:4502 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4502);
+  }
+  /* ./parser//parser.nit:4504 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4504);
+  }
+  /* ./parser//parser.nit:4505 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4517 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4518 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction101____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4518);
+  }
+  REGB0 = ATTR_parser___ReduceAction101____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction101___init(val_t p0, val_t p1, int* init_table){
+  int itpos104 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction101].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos104]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4521;
+  fra.me.meth = LOCATE_parser___ReduceAction101___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4521 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction101____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos104] = 1;
+  return;
+}
+void parser___ReduceAction102___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 = 4525;
+  fra.me.meth = LOCATE_parser___ReduceAction102___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4527 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4528 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4529 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4530 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4531 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4532 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4533 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4534 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4535 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4536 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4538 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4538);
+  }
+  /* ./parser//parser.nit:4540 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4540);
+  }
+  /* ./parser//parser.nit:4542 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4542);
+  }
+  /* ./parser//parser.nit:4544 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4544);
+  }
+  /* ./parser//parser.nit:4546 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4546);
+  }
+  /* ./parser//parser.nit:4548 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4548);
+  }
+  /* ./parser//parser.nit:4550 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4550);
+  }
+  /* ./parser//parser.nit:4551 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4563 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4564 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction102____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4564);
+  }
+  REGB0 = ATTR_parser___ReduceAction102____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction102___init(val_t p0, val_t p1, int* init_table){
+  int itpos105 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction102].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos105]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4567;
+  fra.me.meth = LOCATE_parser___ReduceAction102___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4567 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction102____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos105] = 1;
+  return;
+}
+void parser___ReduceAction103___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 = 4571;
+  fra.me.meth = LOCATE_parser___ReduceAction103___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4573 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4574 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4575 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4576 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4577 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4578 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4579 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4580 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4581 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4582 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4584 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4584);
+  }
+  /* ./parser//parser.nit:4586 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4586);
+  }
+  /* ./parser//parser.nit:4588 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4588);
+  }
+  /* ./parser//parser.nit:4590 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4590);
+  }
+  /* ./parser//parser.nit:4592 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4592);
+  }
+  /* ./parser//parser.nit:4594 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4594);
+  }
+  /* ./parser//parser.nit:4596 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4596);
+  }
+  /* ./parser//parser.nit:4597 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4609 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4610 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction103____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4610);
+  }
+  REGB0 = ATTR_parser___ReduceAction103____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction103___init(val_t p0, val_t p1, int* init_table){
+  int itpos106 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction103].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos106]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4613;
+  fra.me.meth = LOCATE_parser___ReduceAction103___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4613 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction103____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos106] = 1;
+  return;
+}
+void parser___ReduceAction104___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 = 4617;
+  fra.me.meth = LOCATE_parser___ReduceAction104___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4619 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4620 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4621 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4622 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4623 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4624 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4625 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4626 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4627 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4628 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4629 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4631 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4631);
+  }
+  /* ./parser//parser.nit:4633 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4633);
+  }
+  /* ./parser//parser.nit:4635 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4635);
+  }
+  /* ./parser//parser.nit:4637 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4637);
+  }
+  /* ./parser//parser.nit:4639 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4639);
+  }
+  /* ./parser//parser.nit:4641 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4641);
+  }
+  /* ./parser//parser.nit:4643 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4643);
+  }
+  /* ./parser//parser.nit:4645 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4645);
+  }
+  /* ./parser//parser.nit:4646 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4658 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4659 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction104____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4659);
+  }
+  REGB0 = ATTR_parser___ReduceAction104____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction104___init(val_t p0, val_t p1, int* init_table){
+  int itpos107 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction104].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos107]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4662;
+  fra.me.meth = LOCATE_parser___ReduceAction104___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4662 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction104____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos107] = 1;
+  return;
+}
+void parser___ReduceAction105___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 = 4666;
+  fra.me.meth = LOCATE_parser___ReduceAction105___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4668 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4669 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4670 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4671 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4672 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4673 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4674 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4675 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4676 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4678 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_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[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4680);
+  }
+  /* ./parser//parser.nit:4682 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4682);
+  }
+  /* ./parser//parser.nit:4684 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4684);
+  }
+  /* ./parser//parser.nit:4686 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4686);
+  }
+  /* ./parser//parser.nit:4688 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4688);
+  }
+  /* ./parser//parser.nit:4689 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4701 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4702 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction105____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4702);
+  }
+  REGB0 = ATTR_parser___ReduceAction105____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction105___init(val_t p0, val_t p1, int* init_table){
+  int itpos108 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction105].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos108]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4705;
+  fra.me.meth = LOCATE_parser___ReduceAction105___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4705 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction105____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos108] = 1;
+  return;
+}
+void parser___ReduceAction106___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 = 4709;
+  fra.me.meth = LOCATE_parser___ReduceAction106___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4711 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4712 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4713 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4714 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4715 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4716 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4717 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4718 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4719 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4720 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4722 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4722);
+  }
+  /* ./parser//parser.nit:4724 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4724);
+  }
+  /* ./parser//parser.nit:4726 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4726);
+  }
+  /* ./parser//parser.nit:4728 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4728);
+  }
+  /* ./parser//parser.nit:4730 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4730);
+  }
+  /* ./parser//parser.nit:4732 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4732);
+  }
+  /* ./parser//parser.nit:4734 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
+  }
+  /* ./parser//parser.nit:4735 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4747 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4748 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction106____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4748);
+  }
+  REGB0 = ATTR_parser___ReduceAction106____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction106___init(val_t p0, val_t p1, int* init_table){
+  int itpos109 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction106].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos109]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4751;
+  fra.me.meth = LOCATE_parser___ReduceAction106___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4751 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction106____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos109] = 1;
+  return;
+}
+void parser___ReduceAction107___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 = 4755;
+  fra.me.meth = LOCATE_parser___ReduceAction107___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4757 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4758 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4759 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4760 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4761 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4762 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4763 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4764 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4765 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4766 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4768 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4768);
+  }
+  /* ./parser//parser.nit:4770 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4770);
+  }
+  /* ./parser//parser.nit:4772 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4772);
+  }
+  /* ./parser//parser.nit:4774 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4774);
+  }
+  /* ./parser//parser.nit:4776 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4776);
+  }
+  /* ./parser//parser.nit:4778 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4778);
+  }
+  /* ./parser//parser.nit:4780 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4780);
+  }
+  /* ./parser//parser.nit:4781 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4793 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4794 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction107____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4794);
+  }
+  REGB0 = ATTR_parser___ReduceAction107____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction107___init(val_t p0, val_t p1, int* init_table){
+  int itpos110 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction107].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos110]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4797;
+  fra.me.meth = LOCATE_parser___ReduceAction107___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4797 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction107____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos110] = 1;
+  return;
+}
+void parser___ReduceAction108___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 = 4801;
+  fra.me.meth = LOCATE_parser___ReduceAction108___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4803 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4804 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4805 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4806 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4807 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4808 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4809 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4810 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4811 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4812 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4813 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4815 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4815);
+  }
+  /* ./parser//parser.nit:4817 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4817);
+  }
+  /* ./parser//parser.nit:4819 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4819);
+  }
+  /* ./parser//parser.nit:4821 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4821);
+  }
+  /* ./parser//parser.nit:4823 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4823);
+  }
+  /* ./parser//parser.nit:4825 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4825);
+  }
+  /* ./parser//parser.nit:4827 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4827);
+  }
+  /* ./parser//parser.nit:4829 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4829);
+  }
+  /* ./parser//parser.nit:4830 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4842 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4843 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction108____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4843);
+  }
+  REGB0 = ATTR_parser___ReduceAction108____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction108___init(val_t p0, val_t p1, int* init_table){
+  int itpos111 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction108].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos111]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4846;
+  fra.me.meth = LOCATE_parser___ReduceAction108___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4846 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction108____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos111] = 1;
+  return;
+}
+void parser___ReduceAction109___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 = 4850;
+  fra.me.meth = LOCATE_parser___ReduceAction109___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4852 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4853 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4854 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4855 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4856 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4857 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4858 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4859 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4860 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4861 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4863 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4863);
+  }
+  /* ./parser//parser.nit:4865 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4865);
+  }
+  /* ./parser//parser.nit:4867 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4867);
+  }
+  /* ./parser//parser.nit:4869 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4869);
+  }
+  /* ./parser//parser.nit:4871 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4871);
+  }
+  /* ./parser//parser.nit:4873 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4873);
+  }
+  /* ./parser//parser.nit:4875 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4875);
+  }
+  /* ./parser//parser.nit:4876 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4888 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4889 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction109____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4889);
+  }
+  REGB0 = ATTR_parser___ReduceAction109____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction109___init(val_t p0, val_t p1, int* init_table){
+  int itpos112 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction109].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos112]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4892;
+  fra.me.meth = LOCATE_parser___ReduceAction109___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4892 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction109____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos112] = 1;
+  return;
+}
+void parser___ReduceAction110___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 = 4896;
+  fra.me.meth = LOCATE_parser___ReduceAction110___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4898 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4899 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4900 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4901 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4902 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4903 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4904 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4905 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4906 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4907 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4908 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4910 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4910);
+  }
+  /* ./parser//parser.nit:4912 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4912);
+  }
+  /* ./parser//parser.nit:4914 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4914);
+  }
+  /* ./parser//parser.nit:4916 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4916);
+  }
+  /* ./parser//parser.nit:4918 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4918);
+  }
+  /* ./parser//parser.nit:4920 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4920);
+  }
+  /* ./parser//parser.nit:4922 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4922);
+  }
+  /* ./parser//parser.nit:4924 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4924);
+  }
+  /* ./parser//parser.nit:4925 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4937 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4938 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction110____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4938);
+  }
+  REGB0 = ATTR_parser___ReduceAction110____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction110___init(val_t p0, val_t p1, int* init_table){
+  int itpos113 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction110].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos113]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4941;
+  fra.me.meth = LOCATE_parser___ReduceAction110___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4941 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction110____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos113] = 1;
+  return;
+}
+void parser___ReduceAction111___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 = 4945;
+  fra.me.meth = LOCATE_parser___ReduceAction111___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4947 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4948 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4949 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4950 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4951 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4952 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4953 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4954 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4955 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4956 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4957 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4959 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4959);
+  }
+  /* ./parser//parser.nit:4961 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4961);
+  }
+  /* ./parser//parser.nit:4963 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4963);
+  }
+  /* ./parser//parser.nit:4965 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4965);
+  }
+  /* ./parser//parser.nit:4967 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4967);
+  }
+  /* ./parser//parser.nit:4969 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4969);
+  }
+  /* ./parser//parser.nit:4971 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4971);
+  }
+  /* ./parser//parser.nit:4973 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4973);
+  }
+  /* ./parser//parser.nit:4974 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:4986 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:4987 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction111____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4987);
+  }
+  REGB0 = ATTR_parser___ReduceAction111____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction111___init(val_t p0, val_t p1, int* init_table){
+  int itpos114 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction111].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos114]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4990;
+  fra.me.meth = LOCATE_parser___ReduceAction111___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:4990 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction111____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos114] = 1;
+  return;
+}
+void parser___ReduceAction112___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 = 4994;
+  fra.me.meth = LOCATE_parser___ReduceAction112___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:4996 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:4997 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4998 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:4999 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5000 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5001 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5002 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5003 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5004 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5005 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5006 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5007 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5009 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5009);
+  }
+  /* ./parser//parser.nit:5011 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5011);
+  }
+  /* ./parser//parser.nit:5013 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5013);
+  }
+  /* ./parser//parser.nit:5015 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5015);
+  }
+  /* ./parser//parser.nit:5017 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5017);
+  }
+  /* ./parser//parser.nit:5019 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5019);
+  }
+  /* ./parser//parser.nit:5021 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5021);
+  }
+  /* ./parser//parser.nit:5023 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5023);
+  }
+  /* ./parser//parser.nit:5025 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5025);
+  }
+  /* ./parser//parser.nit:5026 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5038 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5039 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction112____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5039);
+  }
+  REGB0 = ATTR_parser___ReduceAction112____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction112___init(val_t p0, val_t p1, int* init_table){
+  int itpos115 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction112].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos115]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5042;
+  fra.me.meth = LOCATE_parser___ReduceAction112___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5042 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction112____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos115] = 1;
+  return;
+}
+void parser___ReduceAction113___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 = 5046;
+  fra.me.meth = LOCATE_parser___ReduceAction113___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:5048 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5049 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5050 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5051 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5052 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5054 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5054);
+  }
+  /* ./parser//parser.nit:5056 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5056);
+  }
+  /* ./parser//parser.nit:5058 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5058);
+  }
+  /* ./parser//parser.nit:5060 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5060);
+  }
+  /* ./parser//parser.nit:5061 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5073 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5074 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction113____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5074);
+  }
+  REGB0 = ATTR_parser___ReduceAction113____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction113___init(val_t p0, val_t p1, int* init_table){
+  int itpos116 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction113].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos116]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5077;
+  fra.me.meth = LOCATE_parser___ReduceAction113___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5077 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction113____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos116] = 1;
+  return;
+}
+void parser___ReduceAction114___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 = 5081;
+  fra.me.meth = LOCATE_parser___ReduceAction114___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5083 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5084 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5085 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5086 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5087 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5088 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5090 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5090);
+  }
+  /* ./parser//parser.nit:5092 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5092);
+  }
+  /* ./parser//parser.nit:5094 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5094);
+  }
+  /* ./parser//parser.nit:5096 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5096);
+  }
+  /* ./parser//parser.nit:5098 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5098);
+  }
+  /* ./parser//parser.nit:5099 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5111 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5112 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction114____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5112);
+  }
+  REGB0 = ATTR_parser___ReduceAction114____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction114___init(val_t p0, val_t p1, int* init_table){
+  int itpos117 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction114].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos117]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5115;
+  fra.me.meth = LOCATE_parser___ReduceAction114___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5115 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction114____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos117] = 1;
+  return;
+}
+void parser___ReduceAction115___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 = 5119;
+  fra.me.meth = LOCATE_parser___ReduceAction115___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5121 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5122 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5123 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5124 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5125 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5126 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5128 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5128);
+  }
+  /* ./parser//parser.nit:5130 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5130);
+  }
+  /* ./parser//parser.nit:5132 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5132);
+  }
+  /* ./parser//parser.nit:5134 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5134);
+  }
+  /* ./parser//parser.nit:5136 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5136);
+  }
+  /* ./parser//parser.nit:5137 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5149 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5150 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction115____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5150);
+  }
+  REGB0 = ATTR_parser___ReduceAction115____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction115___init(val_t p0, val_t p1, int* init_table){
+  int itpos118 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction115].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos118]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5153;
+  fra.me.meth = LOCATE_parser___ReduceAction115___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5153 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction115____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos118] = 1;
+  return;
+}
+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 = 5157;
+  fra.me.meth = LOCATE_parser___ReduceAction116___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5159 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5160 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5161 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5162 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5163 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5164 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5165 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5167 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5167);
+  }
+  /* ./parser//parser.nit:5169 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5169);
+  }
+  /* ./parser//parser.nit:5171 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5171);
+  }
+  /* ./parser//parser.nit:5173 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5173);
+  }
+  /* ./parser//parser.nit:5175 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5175);
+  }
+  /* ./parser//parser.nit:5177 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5177);
+  }
+  /* ./parser//parser.nit:5178 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5190 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5191 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction116____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5191);
+  }
+  REGB0 = ATTR_parser___ReduceAction116____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction116___init(val_t p0, val_t p1, int* init_table){
+  int itpos119 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction116].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos119]) return;
+  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___ReduceAction116___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5194 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction116____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos119] = 1;
+  return;
+}
+void parser___ReduceAction117___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 = 5198;
+  fra.me.meth = LOCATE_parser___ReduceAction117___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5200 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5201 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5202 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5203 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5204 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5205 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5207 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5207);
+  }
+  /* ./parser//parser.nit:5209 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5209);
+  }
+  /* ./parser//parser.nit:5211 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5211);
+  }
+  /* ./parser//parser.nit:5213 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5213);
+  }
+  /* ./parser//parser.nit:5215 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5215);
+  }
+  /* ./parser//parser.nit:5216 */
+  fra.me.REG[4] = NEW_AAttrPropdef_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:5228 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:5229 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction117____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5229);
+  }
+  REGB0 = ATTR_parser___ReduceAction117____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction117___init(val_t p0, val_t p1, int* init_table){
+  int itpos120 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction117].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos120]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5232;
+  fra.me.meth = LOCATE_parser___ReduceAction117___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5232 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction117____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos120] = 1;
+  return;
+}
+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 = 5236;
+  fra.me.meth = LOCATE_parser___ReduceAction118___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5238 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5239 */
+  fra.me.REG[3] = 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:5242 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5243 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5244 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5246 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5246);
+  }
+  /* ./parser//parser.nit:5248 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5248);
+  }
+  /* ./parser//parser.nit:5250 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5250);
+  }
+  /* ./parser//parser.nit:5252 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5252);
+  }
+  /* ./parser//parser.nit:5254 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5254);
+  }
+  /* ./parser//parser.nit:5256 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5256);
+  }
+  /* ./parser//parser.nit:5257 */
+  fra.me.REG[4] = NEW_AAttrPropdef_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:5269 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:5270 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction118____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5270);
+  }
+  REGB0 = ATTR_parser___ReduceAction118____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction118___init(val_t p0, val_t p1, int* init_table){
+  int itpos121 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction118].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos121]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5273;
+  fra.me.meth = LOCATE_parser___ReduceAction118___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5273 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction118____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos121] = 1;
+  return;
+}
+void parser___ReduceAction119___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 = 5277;
+  fra.me.meth = LOCATE_parser___ReduceAction119___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5279 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5280 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5281 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5282 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5283 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5284 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5285 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5287 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5287);
+  }
+  /* ./parser//parser.nit:5289 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5289);
+  }
+  /* ./parser//parser.nit:5291 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5291);
+  }
+  /* ./parser//parser.nit:5293 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5293);
+  }
+  /* ./parser//parser.nit:5295 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5295);
+  }
+  /* ./parser//parser.nit:5297 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5297);
+  }
+  /* ./parser//parser.nit:5298 */
+  fra.me.REG[4] = NEW_AAttrPropdef_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:5310 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:5311 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction119____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5311);
+  }
+  REGB0 = ATTR_parser___ReduceAction119____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction119___init(val_t p0, val_t p1, int* init_table){
+  int itpos122 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction119].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos122]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5314;
+  fra.me.meth = LOCATE_parser___ReduceAction119___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5314 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction119____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos122] = 1;
+  return;
+}
+void parser___ReduceAction120___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 = 5318;
+  fra.me.meth = LOCATE_parser___ReduceAction120___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5320 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5321 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5322 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5323 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5324 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5325 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5326 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5327 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5329 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5329);
+  }
+  /* ./parser//parser.nit:5331 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5331);
+  }
+  /* ./parser//parser.nit:5333 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5333);
+  }
+  /* ./parser//parser.nit:5335 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5335);
+  }
+  /* ./parser//parser.nit:5337 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5337);
+  }
+  /* ./parser//parser.nit:5339 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5339);
+  }
+  /* ./parser//parser.nit:5341 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5341);
+  }
+  /* ./parser//parser.nit:5342 */
+  fra.me.REG[4] = NEW_AAttrPropdef_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:5354 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:5355 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction120____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5355);
+  }
+  REGB0 = ATTR_parser___ReduceAction120____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction120___init(val_t p0, val_t p1, int* init_table){
+  int itpos123 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction120].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos123]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5358;
+  fra.me.meth = LOCATE_parser___ReduceAction120___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5358 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction120____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos123] = 1;
+  return;
+}
+void parser___ReduceAction121___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 = 5362;
+  fra.me.meth = LOCATE_parser___ReduceAction121___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5364 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5365 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5366 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5367 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5368 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5369 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5370 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5371 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5373 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5373);
+  }
+  /* ./parser//parser.nit:5375 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5375);
+  }
+  /* ./parser//parser.nit:5377 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5377);
+  }
+  /* ./parser//parser.nit:5379 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5379);
+  }
+  /* ./parser//parser.nit:5381 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5381);
+  }
+  /* ./parser//parser.nit:5382 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5394 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5395 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction121____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5395);
+  }
+  REGB0 = ATTR_parser___ReduceAction121____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction121___init(val_t p0, val_t p1, int* init_table){
+  int itpos124 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction121].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos124]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5398;
+  fra.me.meth = LOCATE_parser___ReduceAction121___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5398 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction121____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos124] = 1;
+  return;
+}
+void parser___ReduceAction122___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 = 5402;
+  fra.me.meth = LOCATE_parser___ReduceAction122___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5404 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5405 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5406 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5407 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5408 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5409 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5410 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5411 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5412 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5414 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5414);
+  }
+  /* ./parser//parser.nit:5416 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5416);
+  }
+  /* ./parser//parser.nit:5418 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5418);
+  }
+  /* ./parser//parser.nit:5420 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5420);
+  }
+  /* ./parser//parser.nit:5422 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5422);
+  }
+  /* ./parser//parser.nit:5424 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5424);
+  }
+  /* ./parser//parser.nit:5425 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5437 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5438 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction122____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5438);
+  }
+  REGB0 = ATTR_parser___ReduceAction122____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction122___init(val_t p0, val_t p1, int* init_table){
+  int itpos125 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction122].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos125]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5441;
+  fra.me.meth = LOCATE_parser___ReduceAction122___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5441 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction122____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos125] = 1;
+  return;
+}
+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 = 5445;
+  fra.me.meth = LOCATE_parser___ReduceAction123___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5447 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5448 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5449 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5450 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5451 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5452 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5453 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5454 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5455 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5457 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5457);
+  }
+  /* ./parser//parser.nit:5459 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5459);
+  }
+  /* ./parser//parser.nit:5461 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5461);
+  }
+  /* ./parser//parser.nit:5463 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5463);
+  }
+  /* ./parser//parser.nit:5465 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5465);
+  }
+  /* ./parser//parser.nit:5467 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5467);
+  }
+  /* ./parser//parser.nit:5468 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5480 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5481 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction123____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5481);
+  }
+  REGB0 = ATTR_parser___ReduceAction123____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction123___init(val_t p0, val_t p1, int* init_table){
+  int itpos126 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction123].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos126]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5484;
+  fra.me.meth = LOCATE_parser___ReduceAction123___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5484 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction123____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos126] = 1;
+  return;
+}
+void parser___ReduceAction124___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 = 5488;
+  fra.me.meth = LOCATE_parser___ReduceAction124___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5490 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5491 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5492 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5493 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5494 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5495 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5496 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5497 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5498 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5499 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5501 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5501);
+  }
+  /* ./parser//parser.nit:5503 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5503);
+  }
+  /* ./parser//parser.nit:5505 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5505);
+  }
+  /* ./parser//parser.nit:5507 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5507);
+  }
+  /* ./parser//parser.nit:5509 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5509);
+  }
+  /* ./parser//parser.nit:5511 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5511);
+  }
+  /* ./parser//parser.nit:5513 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5513);
+  }
+  /* ./parser//parser.nit:5514 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5526 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5527 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction124____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5527);
+  }
+  REGB0 = ATTR_parser___ReduceAction124____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction124___init(val_t p0, val_t p1, int* init_table){
+  int itpos127 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction124].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos127]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5530;
+  fra.me.meth = LOCATE_parser___ReduceAction124___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5530 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction124____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos127] = 1;
+  return;
+}
+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 = 5534;
+  fra.me.meth = LOCATE_parser___ReduceAction125___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5536 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5537 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5538 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5539 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5540 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5541 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5542 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5543 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5544 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5546 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5546);
+  }
+  /* ./parser//parser.nit:5548 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5548);
+  }
+  /* ./parser//parser.nit:5550 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5550);
+  }
+  /* ./parser//parser.nit:5552 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5552);
+  }
+  /* ./parser//parser.nit:5554 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5554);
+  }
+  /* ./parser//parser.nit:5556 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5556);
+  }
+  /* ./parser//parser.nit:5557 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5569 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5570 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction125____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5570);
+  }
+  REGB0 = ATTR_parser___ReduceAction125____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction125___init(val_t p0, val_t p1, int* init_table){
+  int itpos128 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction125].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos128]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5573;
+  fra.me.meth = LOCATE_parser___ReduceAction125___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5573 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction125____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos128] = 1;
+  return;
+}
+void parser___ReduceAction126___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 = 5577;
+  fra.me.meth = LOCATE_parser___ReduceAction126___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5579 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5583 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5584 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5585 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5586 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5587 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5588 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5590 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  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_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5592);
+  }
+  /* ./parser//parser.nit:5594 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5594);
+  }
+  /* ./parser//parser.nit:5596 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5596);
+  }
+  /* ./parser//parser.nit:5598 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5598);
+  }
+  /* ./parser//parser.nit:5600 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5600);
+  }
+  /* ./parser//parser.nit:5602 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5602);
+  }
+  /* ./parser//parser.nit:5603 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5615 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5616 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction126____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5616);
+  }
+  REGB0 = ATTR_parser___ReduceAction126____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction126___init(val_t p0, val_t p1, int* init_table){
+  int itpos129 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction126].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos129]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5619;
+  fra.me.meth = LOCATE_parser___ReduceAction126___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5619 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction126____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos129] = 1;
+  return;
+}
+void parser___ReduceAction127___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 = 5623;
+  fra.me.meth = LOCATE_parser___ReduceAction127___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5625 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5626 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5627 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5628 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5629 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5630 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5631 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5632 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5633 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5634 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5636 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5636);
+  }
+  /* ./parser//parser.nit:5638 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5638);
+  }
+  /* ./parser//parser.nit:5640 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5640);
+  }
+  /* ./parser//parser.nit:5642 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5642);
+  }
+  /* ./parser//parser.nit:5644 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5644);
+  }
+  /* ./parser//parser.nit:5646 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5646);
+  }
+  /* ./parser//parser.nit:5648 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5648);
+  }
+  /* ./parser//parser.nit:5649 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5661 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5662 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction127____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5662);
+  }
+  REGB0 = ATTR_parser___ReduceAction127____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction127___init(val_t p0, val_t p1, int* init_table){
+  int itpos130 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction127].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos130]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5665;
+  fra.me.meth = LOCATE_parser___ReduceAction127___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5665 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction127____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos130] = 1;
+  return;
+}
+void parser___ReduceAction128___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 = 5669;
+  fra.me.meth = LOCATE_parser___ReduceAction128___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5671 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5672 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5673 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5674 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5675 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5676 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5677 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5678 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5679 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5680 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5681 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5683 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5683);
+  }
+  /* ./parser//parser.nit:5685 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5685);
+  }
+  /* ./parser//parser.nit:5687 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5687);
+  }
+  /* ./parser//parser.nit:5689 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5689);
+  }
+  /* ./parser//parser.nit:5691 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5691);
+  }
+  /* ./parser//parser.nit:5693 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5693);
+  }
+  /* ./parser//parser.nit:5695 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5695);
+  }
+  /* ./parser//parser.nit:5697 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5697);
+  }
+  /* ./parser//parser.nit:5698 */
+  fra.me.REG[3] = NEW_AAttrPropdef_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:5710 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5711 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction128____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5711);
+  }
+  REGB0 = ATTR_parser___ReduceAction128____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction128___init(val_t p0, val_t p1, int* init_table){
+  int itpos131 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction128].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos131]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5714;
+  fra.me.meth = LOCATE_parser___ReduceAction128___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5714 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction128____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos131] = 1;
+  return;
+}
+void parser___ReduceAction129___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 = 5718;
+  fra.me.meth = LOCATE_parser___ReduceAction129___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5720 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5721 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5722 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5723 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5724 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5725 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5726 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5728 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5728);
+  }
+  /* ./parser//parser.nit:5730 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5730);
+  }
+  /* ./parser//parser.nit:5732 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5732);
+  }
+  /* ./parser//parser.nit:5734 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5734);
+  }
+  /* ./parser//parser.nit:5736 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5736);
+  }
+  /* ./parser//parser.nit:5737 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5746 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5747 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction129____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5747);
+  }
+  REGB0 = ATTR_parser___ReduceAction129____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction129___init(val_t p0, val_t p1, int* init_table){
+  int itpos132 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction129].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos132]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5750;
+  fra.me.meth = LOCATE_parser___ReduceAction129___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5750 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction129____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos132] = 1;
+  return;
+}
+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 = 5754;
+  fra.me.meth = LOCATE_parser___ReduceAction130___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5756 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5757 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5758 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5759 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5760 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5761 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5762 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5763 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5765 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5765);
+  }
+  /* ./parser//parser.nit:5767 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5767);
+  }
+  /* ./parser//parser.nit:5769 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5769);
+  }
+  /* ./parser//parser.nit:5771 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5771);
+  }
+  /* ./parser//parser.nit:5773 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5773);
+  }
+  /* ./parser//parser.nit:5775 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5775);
+  }
+  /* ./parser//parser.nit:5776 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5785 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5786 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction130____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5786);
+  }
+  REGB0 = ATTR_parser___ReduceAction130____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction130___init(val_t p0, val_t p1, int* init_table){
+  int itpos133 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction130].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos133]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5789;
+  fra.me.meth = LOCATE_parser___ReduceAction130___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5789 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction130____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos133] = 1;
+  return;
+}
+void parser___ReduceAction131___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 = 5793;
+  fra.me.meth = LOCATE_parser___ReduceAction131___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5795 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5796 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5797 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5798 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5799 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5800 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5801 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5802 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5804 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5804);
+  }
+  /* ./parser//parser.nit:5806 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5806);
+  }
+  /* ./parser//parser.nit:5808 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5808);
+  }
+  /* ./parser//parser.nit:5810 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5810);
+  }
+  /* ./parser//parser.nit:5812 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5812);
+  }
+  /* ./parser//parser.nit:5814 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5814);
+  }
+  /* ./parser//parser.nit:5815 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5824 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5825 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction131____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5825);
+  }
+  REGB0 = ATTR_parser___ReduceAction131____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction131___init(val_t p0, val_t p1, int* init_table){
+  int itpos134 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction131].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos134]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5828;
+  fra.me.meth = LOCATE_parser___ReduceAction131___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5828 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction131____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos134] = 1;
+  return;
+}
+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 = 5832;
+  fra.me.meth = LOCATE_parser___ReduceAction132___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5834 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5835 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5836 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5837 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5838 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5839 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5840 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5841 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5842 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5844 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5844);
+  }
+  /* ./parser//parser.nit:5846 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5846);
+  }
+  /* ./parser//parser.nit:5848 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5848);
+  }
+  /* ./parser//parser.nit:5850 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5850);
+  }
+  /* ./parser//parser.nit:5852 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5852);
+  }
+  /* ./parser//parser.nit:5854 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5854);
+  }
+  /* ./parser//parser.nit:5856 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5856);
+  }
+  /* ./parser//parser.nit:5857 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5866 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5867 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction132____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5867);
+  }
+  REGB0 = ATTR_parser___ReduceAction132____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction132___init(val_t p0, val_t p1, int* init_table){
+  int itpos135 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction132].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos135]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5870;
+  fra.me.meth = LOCATE_parser___ReduceAction132___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5870 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction132____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos135] = 1;
+  return;
+}
+void parser___ReduceAction133___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 = 5874;
+  fra.me.meth = LOCATE_parser___ReduceAction133___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5876 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5877 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5878 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5879 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5880 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5881 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5882 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5883 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5885 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5885);
+  }
+  /* ./parser//parser.nit:5887 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5887);
+  }
+  /* ./parser//parser.nit:5889 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5889);
+  }
+  /* ./parser//parser.nit:5891 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5891);
+  }
+  /* ./parser//parser.nit:5893 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5893);
+  }
+  /* ./parser//parser.nit:5894 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5903 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5904 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction133____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5904);
+  }
+  REGB0 = ATTR_parser___ReduceAction133____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction133___init(val_t p0, val_t p1, int* init_table){
+  int itpos136 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction133].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos136]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5907;
+  fra.me.meth = LOCATE_parser___ReduceAction133___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5907 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction133____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos136] = 1;
+  return;
+}
+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 = 5911;
+  fra.me.meth = LOCATE_parser___ReduceAction134___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5913 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5914 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5915 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5916 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5917 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5918 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5919 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5920 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5921 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5923 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5923);
+  }
+  /* ./parser//parser.nit:5925 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5925);
+  }
+  /* ./parser//parser.nit:5927 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5927);
+  }
+  /* ./parser//parser.nit:5929 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5929);
+  }
+  /* ./parser//parser.nit:5931 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5931);
+  }
+  /* ./parser//parser.nit:5933 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5933);
+  }
+  /* ./parser//parser.nit:5934 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5943 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5944 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction134____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5944);
+  }
+  REGB0 = ATTR_parser___ReduceAction134____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction134___init(val_t p0, val_t p1, int* init_table){
+  int itpos137 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction134].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos137]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5947;
+  fra.me.meth = LOCATE_parser___ReduceAction134___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5947 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction134____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos137] = 1;
+  return;
+}
+void parser___ReduceAction135___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 = 5951;
+  fra.me.meth = LOCATE_parser___ReduceAction135___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5953 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5954 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5955 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5956 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5957 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5958 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5959 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5960 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5961 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5963 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5963);
+  }
+  /* ./parser//parser.nit:5965 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5965);
+  }
+  /* ./parser//parser.nit:5967 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5967);
+  }
+  /* ./parser//parser.nit:5969 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5969);
+  }
+  /* ./parser//parser.nit:5971 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5971);
+  }
+  /* ./parser//parser.nit:5973 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5973);
+  }
+  /* ./parser//parser.nit:5974 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:5983 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:5984 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction135____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5984);
+  }
+  REGB0 = ATTR_parser___ReduceAction135____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction135___init(val_t p0, val_t p1, int* init_table){
+  int itpos138 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction135].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos138]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5987;
+  fra.me.meth = LOCATE_parser___ReduceAction135___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:5987 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction135____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos138] = 1;
+  return;
+}
+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 = 5991;
+  fra.me.meth = LOCATE_parser___ReduceAction136___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:5993 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:5994 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5995 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5996 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5997 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5998 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:5999 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6000 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6001 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6002 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6004 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6004);
+  }
+  /* ./parser//parser.nit:6006 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6006);
+  }
+  /* ./parser//parser.nit:6008 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6008);
+  }
+  /* ./parser//parser.nit:6010 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6010);
+  }
+  /* ./parser//parser.nit:6012 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6012);
+  }
+  /* ./parser//parser.nit:6014 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6014);
+  }
+  /* ./parser//parser.nit:6016 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6016);
+  }
+  /* ./parser//parser.nit:6017 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_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:6026 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6027 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction136____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6027);
+  }
+  REGB0 = ATTR_parser___ReduceAction136____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction136___init(val_t p0, val_t p1, int* init_table){
+  int itpos139 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction136].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos139]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6030;
+  fra.me.meth = LOCATE_parser___ReduceAction136___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6030 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction136____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos139] = 1;
+  return;
+}
+void parser___ReduceAction137___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 = 6034;
+  fra.me.meth = LOCATE_parser___ReduceAction137___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:6036 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6037 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6038 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6039 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6040 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6041 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6043 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6043);
+  }
+  /* ./parser//parser.nit:6045 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6045);
+  }
+  /* ./parser//parser.nit:6047 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwtype, ID_TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6047);
+  }
+  /* ./parser//parser.nit:6049 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6049);
+  }
+  /* ./parser//parser.nit:6051 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6051);
+  }
+  /* ./parser//parser.nit:6052 */
+  fra.me.REG[3] = NEW_ATypePropdef_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:6060 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6061 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction137____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6061);
+  }
+  REGB0 = ATTR_parser___ReduceAction137____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction137___init(val_t p0, val_t p1, int* init_table){
+  int itpos140 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction137].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos140]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6064;
+  fra.me.meth = LOCATE_parser___ReduceAction137___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6064 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction137____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos140] = 1;
+  return;
+}
+void parser___ReduceAction138___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 = 6068;
+  fra.me.meth = LOCATE_parser___ReduceAction138___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:6070 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6071 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6072 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6073 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6074 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6075 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6076 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6078 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6078);
+  }
+  /* ./parser//parser.nit:6080 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6080);
+  }
+  /* ./parser//parser.nit:6082 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6082);
+  }
+  /* ./parser//parser.nit:6084 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwtype, ID_TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6084);
+  }
+  /* ./parser//parser.nit:6086 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6086);
+  }
+  /* ./parser//parser.nit:6088 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6088);
+  }
+  /* ./parser//parser.nit:6089 */
+  fra.me.REG[3] = NEW_ATypePropdef_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:6097 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6098 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction138____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6098);
+  }
+  REGB0 = ATTR_parser___ReduceAction138____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction138___init(val_t p0, val_t p1, int* init_table){
+  int itpos141 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction138].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos141]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6101;
+  fra.me.meth = LOCATE_parser___ReduceAction138___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6101 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction138____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos141] = 1;
+  return;
+}
+void parser___ReduceAction139___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 = 6105;
+  fra.me.meth = LOCATE_parser___ReduceAction139___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6107 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6108 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6110 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwreadable, ID_TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6110);
+  }
+  /* ./parser//parser.nit:6111 */
+  fra.me.REG[3] = NEW_AReadAble_parser_prod___AReadAble___init_areadable(NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:6115 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6116 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction139____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6116);
+  }
+  REGB0 = ATTR_parser___ReduceAction139____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction139___init(val_t p0, val_t p1, int* init_table){
+  int itpos142 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction139].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos142]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6119;
+  fra.me.meth = LOCATE_parser___ReduceAction139___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6119 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction139____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos142] = 1;
+  return;
+}
+void parser___ReduceAction140___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 = 6123;
+  fra.me.meth = LOCATE_parser___ReduceAction140___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6125 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6126 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6127 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6129 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6129);
+  }
+  /* ./parser//parser.nit:6131 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwreadable, ID_TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6131);
+  }
+  /* ./parser//parser.nit:6132 */
+  fra.me.REG[3] = NEW_AReadAble_parser_prod___AReadAble___init_areadable(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:6136 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6137 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction140____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6137);
+  }
+  REGB0 = ATTR_parser___ReduceAction140____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction140___init(val_t p0, val_t p1, int* init_table){
+  int itpos143 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction140].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos143]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6140;
+  fra.me.meth = LOCATE_parser___ReduceAction140___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6140 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction140____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos143] = 1;
+  return;
+}
+void parser___ReduceAction141___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 = 6144;
+  fra.me.meth = LOCATE_parser___ReduceAction141___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6146 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6147 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6149 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6149);
+  }
+  /* ./parser//parser.nit:6150 */
+  fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:6155 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6156 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction141____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6156);
+  }
+  REGB0 = ATTR_parser___ReduceAction141____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction141___init(val_t p0, val_t p1, int* init_table){
+  int itpos144 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction141].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos144]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6159;
+  fra.me.meth = LOCATE_parser___ReduceAction141___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6159 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction141____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos144] = 1;
+  return;
+}
+void parser___ReduceAction142___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 = 6163;
+  fra.me.meth = LOCATE_parser___ReduceAction142___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6165 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6166 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6167 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6169 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6169);
+  }
+  /* ./parser//parser.nit:6171 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6171);
+  }
+  /* ./parser//parser.nit:6172 */
+  fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:6177 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6178 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction142____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6178);
+  }
+  REGB0 = ATTR_parser___ReduceAction142____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction142___init(val_t p0, val_t p1, int* init_table){
+  int itpos145 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction142].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos145]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6181;
+  fra.me.meth = LOCATE_parser___ReduceAction142___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6181 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction142____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos145] = 1;
+  return;
+}
+void parser___ReduceAction143___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 = 6185;
+  fra.me.meth = LOCATE_parser___ReduceAction143___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6187 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6188 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6189 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6191 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6191);
+  }
+  /* ./parser//parser.nit:6193 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6193);
+  }
+  /* ./parser//parser.nit:6194 */
+  fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:6199 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6200 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction143____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6200);
+  }
+  REGB0 = ATTR_parser___ReduceAction143____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction143___init(val_t p0, val_t p1, int* init_table){
+  int itpos146 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction143].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos146]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6203;
+  fra.me.meth = LOCATE_parser___ReduceAction143___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6203 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction143____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos146] = 1;
+  return;
+}
+void parser___ReduceAction144___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 = 6207;
+  fra.me.meth = LOCATE_parser___ReduceAction144___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6209 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6210 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6211 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6212 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6214 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6214);
+  }
+  /* ./parser//parser.nit:6216 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6216);
+  }
+  /* ./parser//parser.nit:6218 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6218);
+  }
+  /* ./parser//parser.nit:6219 */
+  fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:6224 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6225 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction144____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6225);
+  }
+  REGB0 = ATTR_parser___ReduceAction144____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction144___init(val_t p0, val_t p1, int* init_table){
+  int itpos147 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction144].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos147]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6228;
+  fra.me.meth = LOCATE_parser___ReduceAction144___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6228 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction144____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos147] = 1;
+  return;
+}
+void parser___ReduceAction145___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 = 6232;
+  fra.me.meth = LOCATE_parser___ReduceAction145___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6234 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6235 */
+  fra.me.REG[3] = NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility();
+  /* ./parser//parser.nit:6237 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6238 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction145____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6238);
+  }
+  REGB0 = ATTR_parser___ReduceAction145____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction145___init(val_t p0, val_t p1, int* init_table){
+  int itpos148 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction145].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos148]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6241;
+  fra.me.meth = LOCATE_parser___ReduceAction145___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6241 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction145____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos148] = 1;
+  return;
+}
+void parser___ReduceAction146___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 = 6245;
+  fra.me.meth = LOCATE_parser___ReduceAction146___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6247 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6248 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6249 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6251 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwprivate, ID_TKwprivate)) /*cast nullable TKwprivate*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6251);
+  }
+  /* ./parser//parser.nit:6252 */
+  fra.me.REG[3] = NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[3]);
+  /* ./parser//parser.nit:6255 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6256 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction146____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6256);
+  }
+  REGB0 = ATTR_parser___ReduceAction146____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction146___init(val_t p0, val_t p1, int* init_table){
+  int itpos149 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction146].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos149]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6259;
+  fra.me.meth = LOCATE_parser___ReduceAction146___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6259 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction146____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos149] = 1;
+  return;
+}
+void parser___ReduceAction147___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 = 6263;
+  fra.me.meth = LOCATE_parser___ReduceAction147___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6265 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6266 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6267 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6269 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwprotected, ID_TKwprotected)) /*cast nullable TKwprotected*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6269);
+  }
+  /* ./parser//parser.nit:6270 */
+  fra.me.REG[3] = NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[3]);
+  /* ./parser//parser.nit:6273 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6274 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction147____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6274);
+  }
+  REGB0 = ATTR_parser___ReduceAction147____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction147___init(val_t p0, val_t p1, int* init_table){
+  int itpos150 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction147].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos150]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6277;
+  fra.me.meth = LOCATE_parser___ReduceAction147___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6277 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction147____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos150] = 1;
+  return;
+}
+void parser___ReduceAction148___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 = 6281;
+  fra.me.meth = LOCATE_parser___ReduceAction148___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6283 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6284 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6285 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6287 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwintrude, ID_TKwintrude)) /*cast nullable TKwintrude*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6287);
+  }
+  /* ./parser//parser.nit:6288 */
+  fra.me.REG[3] = NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[3]);
+  /* ./parser//parser.nit:6291 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6292 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction148____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6292);
+  }
+  REGB0 = ATTR_parser___ReduceAction148____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction148___init(val_t p0, val_t p1, int* init_table){
+  int itpos151 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction148].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos151]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6295;
+  fra.me.meth = LOCATE_parser___ReduceAction148___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6295 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction148____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos151] = 1;
+  return;
+}
+void parser___ReduceAction149___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 = 6299;
+  fra.me.meth = LOCATE_parser___ReduceAction149___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6301 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6302 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6304 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6304);
+  }
+  /* ./parser//parser.nit:6305 */
+  fra.me.REG[3] = NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6308 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6309 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction149____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6309);
+  }
+  REGB0 = ATTR_parser___ReduceAction149____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction149___init(val_t p0, val_t p1, int* init_table){
+  int itpos152 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction149].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos152]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6312;
+  fra.me.meth = LOCATE_parser___ReduceAction149___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6312 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction149____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos152] = 1;
+  return;
+}
+void parser___ReduceAction150___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 = 6316;
+  fra.me.meth = LOCATE_parser___ReduceAction150___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6318 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6319 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6321 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TPlus, ID_TPlus)) /*cast nullable TPlus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6321);
+  }
+  /* ./parser//parser.nit:6322 */
+  fra.me.REG[3] = NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6325 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6326 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction150____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6326);
+  }
+  REGB0 = ATTR_parser___ReduceAction150____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction150___init(val_t p0, val_t p1, int* init_table){
+  int itpos153 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction150].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos153]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6329;
+  fra.me.meth = LOCATE_parser___ReduceAction150___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6329 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction150____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos153] = 1;
+  return;
+}
+void parser___ReduceAction151___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 = 6333;
+  fra.me.meth = LOCATE_parser___ReduceAction151___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6335 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6336 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6338 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TMinus, ID_TMinus)) /*cast nullable TMinus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6338);
+  }
+  /* ./parser//parser.nit:6339 */
+  fra.me.REG[3] = NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6342 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6343 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction151____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6343);
+  }
+  REGB0 = ATTR_parser___ReduceAction151____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction151___init(val_t p0, val_t p1, int* init_table){
+  int itpos154 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction151].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos154]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6346;
+  fra.me.meth = LOCATE_parser___ReduceAction151___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6346 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction151____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos154] = 1;
+  return;
+}
+void parser___ReduceAction152___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 = 6350;
+  fra.me.meth = LOCATE_parser___ReduceAction152___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6352 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6353 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6355 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TStar, ID_TStar)) /*cast nullable TStar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6355);
+  }
+  /* ./parser//parser.nit:6356 */
+  fra.me.REG[3] = NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6359 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6360 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction152____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6360);
+  }
+  REGB0 = ATTR_parser___ReduceAction152____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction152___init(val_t p0, val_t p1, int* init_table){
+  int itpos155 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction152].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos155]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6363;
+  fra.me.meth = LOCATE_parser___ReduceAction152___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6363 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction152____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos155] = 1;
+  return;
+}
+void parser___ReduceAction153___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 = 6367;
+  fra.me.meth = LOCATE_parser___ReduceAction153___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6369 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6370 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6372 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TSlash, ID_TSlash)) /*cast nullable TSlash*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6372);
+  }
+  /* ./parser//parser.nit:6373 */
+  fra.me.REG[3] = NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6376 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6377 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction153____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6377);
+  }
+  REGB0 = ATTR_parser___ReduceAction153____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction153___init(val_t p0, val_t p1, int* init_table){
+  int itpos156 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction153].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos156]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6380;
+  fra.me.meth = LOCATE_parser___ReduceAction153___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6380 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction153____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos156] = 1;
+  return;
+}
+void parser___ReduceAction154___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 = 6384;
+  fra.me.meth = LOCATE_parser___ReduceAction154___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6389 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TPercent, ID_TPercent)) /*cast nullable TPercent*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6389);
+  }
+  /* ./parser//parser.nit:6390 */
+  fra.me.REG[3] = NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6393 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6394 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction154____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6394);
+  }
+  REGB0 = ATTR_parser___ReduceAction154____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction154___init(val_t p0, val_t p1, int* init_table){
+  int itpos157 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction154].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos157]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6397;
+  fra.me.meth = LOCATE_parser___ReduceAction154___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6397 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction154____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos157] = 1;
+  return;
+}
+void parser___ReduceAction155___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 = 6401;
+  fra.me.meth = LOCATE_parser___ReduceAction155___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6403 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6404 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6406 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TEq, ID_TEq)) /*cast nullable TEq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6406);
+  }
+  /* ./parser//parser.nit:6407 */
+  fra.me.REG[3] = NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6410 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6411 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction155____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6411);
+  }
+  REGB0 = ATTR_parser___ReduceAction155____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction155___init(val_t p0, val_t p1, int* init_table){
+  int itpos158 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction155].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos158]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6414;
+  fra.me.meth = LOCATE_parser___ReduceAction155___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6414 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction155____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos158] = 1;
+  return;
+}
+void parser___ReduceAction156___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 = 6418;
+  fra.me.meth = LOCATE_parser___ReduceAction156___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6420 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6421 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6423 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TNe, ID_TNe)) /*cast nullable TNe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6423);
+  }
+  /* ./parser//parser.nit:6424 */
+  fra.me.REG[3] = NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6427 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6428 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction156____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6428);
+  }
+  REGB0 = ATTR_parser___ReduceAction156____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction156___init(val_t p0, val_t p1, int* init_table){
+  int itpos159 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction156].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos159]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6431;
+  fra.me.meth = LOCATE_parser___ReduceAction156___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6431 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction156____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos159] = 1;
+  return;
+}
+void parser___ReduceAction157___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 = 6435;
+  fra.me.meth = LOCATE_parser___ReduceAction157___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6437 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6438 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6440 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TLe, ID_TLe)) /*cast nullable TLe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6440);
+  }
+  /* ./parser//parser.nit:6441 */
+  fra.me.REG[3] = NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6444 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6445 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction157____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6445);
+  }
+  REGB0 = ATTR_parser___ReduceAction157____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction157___init(val_t p0, val_t p1, int* init_table){
+  int itpos160 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction157].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos160]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6448;
+  fra.me.meth = LOCATE_parser___ReduceAction157___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6448 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction157____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos160] = 1;
+  return;
+}
+void parser___ReduceAction158___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 = 6452;
+  fra.me.meth = LOCATE_parser___ReduceAction158___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6454 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6455 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6457 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TGe, ID_TGe)) /*cast nullable TGe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6457);
+  }
+  /* ./parser//parser.nit:6458 */
+  fra.me.REG[3] = NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6461 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6462 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction158____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6462);
+  }
+  REGB0 = ATTR_parser___ReduceAction158____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction158___init(val_t p0, val_t p1, int* init_table){
+  int itpos161 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction158].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos161]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6465;
+  fra.me.meth = LOCATE_parser___ReduceAction158___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6465 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction158____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos161] = 1;
+  return;
+}
+void parser___ReduceAction159___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 = 6469;
+  fra.me.meth = LOCATE_parser___ReduceAction159___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6471 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6472 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6474 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TLt, ID_TLt)) /*cast nullable TLt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6474);
+  }
+  /* ./parser//parser.nit:6475 */
+  fra.me.REG[3] = NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6478 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6479 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction159____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6479);
+  }
+  REGB0 = ATTR_parser___ReduceAction159____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction159___init(val_t p0, val_t p1, int* init_table){
+  int itpos162 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction159].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos162]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6482;
+  fra.me.meth = LOCATE_parser___ReduceAction159___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6482 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction159____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos162] = 1;
+  return;
+}
+void parser___ReduceAction160___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 = 6486;
+  fra.me.meth = LOCATE_parser___ReduceAction160___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6488 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6489 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6491 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TGt, ID_TGt)) /*cast nullable TGt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6491);
+  }
+  /* ./parser//parser.nit:6492 */
+  fra.me.REG[3] = NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6495 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6496 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction160____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6496);
+  }
+  REGB0 = ATTR_parser___ReduceAction160____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction160___init(val_t p0, val_t p1, int* init_table){
+  int itpos163 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction160].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos163]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6499;
+  fra.me.meth = LOCATE_parser___ReduceAction160___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6499 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction160____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos163] = 1;
+  return;
+}
+void parser___ReduceAction161___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 = 6503;
+  fra.me.meth = LOCATE_parser___ReduceAction161___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6505 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6506 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6508 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TLl, ID_TLl)) /*cast nullable TLl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6508);
+  }
+  /* ./parser//parser.nit:6509 */
+  fra.me.REG[3] = NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6512 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6513 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction161____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6513);
+  }
+  REGB0 = ATTR_parser___ReduceAction161____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction161___init(val_t p0, val_t p1, int* init_table){
+  int itpos164 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction161].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos164]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6516;
+  fra.me.meth = LOCATE_parser___ReduceAction161___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6516 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction161____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos164] = 1;
+  return;
+}
+void parser___ReduceAction162___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 = 6520;
+  fra.me.meth = LOCATE_parser___ReduceAction162___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6522 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6525 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TGg, ID_TGg)) /*cast nullable TGg*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6525);
+  }
+  /* ./parser//parser.nit:6526 */
+  fra.me.REG[3] = NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6529 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6530 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction162____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6530);
+  }
+  REGB0 = ATTR_parser___ReduceAction162____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction162___init(val_t p0, val_t p1, int* init_table){
+  int itpos165 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction162].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos165]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6533;
+  fra.me.meth = LOCATE_parser___ReduceAction162___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6533 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction162____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos165] = 1;
+  return;
+}
+void parser___ReduceAction163___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 = 6537;
+  fra.me.meth = LOCATE_parser___ReduceAction163___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6539 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6540 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6541 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6543 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TObra, ID_TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6543);
+  }
+  /* ./parser//parser.nit:6545 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TCbra, ID_TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6545);
+  }
+  /* ./parser//parser.nit:6546 */
+  fra.me.REG[3] = NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:6550 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6551 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction163____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6551);
+  }
+  REGB0 = ATTR_parser___ReduceAction163____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction163___init(val_t p0, val_t p1, int* init_table){
+  int itpos166 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction163].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos166]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6554;
+  fra.me.meth = LOCATE_parser___ReduceAction163___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6554 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction163____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos166] = 1;
+  return;
+}
+void parser___ReduceAction164___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 = 6558;
+  fra.me.meth = LOCATE_parser___ReduceAction164___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6560 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6561 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6563 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TStarship, ID_TStarship)) /*cast nullable TStarship*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6563);
+  }
+  /* ./parser//parser.nit:6564 */
+  fra.me.REG[3] = NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[3]);
+  /* ./parser//parser.nit:6567 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6568 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction164____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6568);
+  }
+  REGB0 = ATTR_parser___ReduceAction164____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction164___init(val_t p0, val_t p1, int* init_table){
+  int itpos167 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction164].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos167]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6571;
+  fra.me.meth = LOCATE_parser___ReduceAction164___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6571 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction164____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos167] = 1;
+  return;
+}
+void parser___ReduceAction165___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 = 6575;
+  fra.me.meth = LOCATE_parser___ReduceAction165___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6577 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6578 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6579 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6581 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6581);
+  }
+  /* ./parser//parser.nit:6583 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6583);
+  }
+  /* ./parser//parser.nit:6584 */
+  fra.me.REG[3] = NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:6588 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6589 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction165____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6589);
+  }
+  REGB0 = ATTR_parser___ReduceAction165____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction165___init(val_t p0, val_t p1, int* init_table){
+  int itpos168 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction165].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos168]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6592;
+  fra.me.meth = LOCATE_parser___ReduceAction165___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6592 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction165____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos168] = 1;
+  return;
+}
+void parser___ReduceAction166___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 = 6596;
+  fra.me.meth = LOCATE_parser___ReduceAction166___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6598 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6599 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6600 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6601 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6603 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TObra, ID_TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6603);
+  }
+  /* ./parser//parser.nit:6605 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TCbra, ID_TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6605);
+  }
+  /* ./parser//parser.nit:6607 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6607);
+  }
+  /* ./parser//parser.nit:6608 */
+  fra.me.REG[3] = NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:6613 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6614 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction166____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6614);
+  }
+  REGB0 = ATTR_parser___ReduceAction166____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction166___init(val_t p0, val_t p1, int* init_table){
+  int itpos169 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction166].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos169]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6617;
+  fra.me.meth = LOCATE_parser___ReduceAction166___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6617 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction166____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos169] = 1;
+  return;
+}
+void parser___ReduceAction167___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 = 6621;
+  fra.me.meth = LOCATE_parser___ReduceAction167___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:6623 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6624 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6625 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6626 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6627 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6629 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6629);
+  }
+  /* ./parser//parser.nit:6631 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6631);
+  }
+  /* ./parser//parser.nit:6632 */
+  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:6633 */
+  fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* ./parser//parser.nit:6638 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:6639 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction167____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6639);
+  }
+  REGB0 = ATTR_parser___ReduceAction167____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction167___init(val_t p0, val_t p1, int* init_table){
+  int itpos170 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction167].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos170]) return;
+  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___ReduceAction167___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6642 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction167____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos170] = 1;
+  return;
+}
+void parser___ReduceAction168___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 = 6646;
+  fra.me.meth = LOCATE_parser___ReduceAction168___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:6648 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6649 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6650 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6651 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6652 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6653 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6655 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6655);
+  }
+  /* ./parser//parser.nit:6656 */
+  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:6658 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6658);
+  }
+  /* ./parser//parser.nit:6660 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6660);
+  }
+  /* ./parser//parser.nit:6661 */
+  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:6662 */
+  fra.me.REG[7] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[4], fra.me.REG[7]);
+  /* ./parser//parser.nit:6667 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:6668 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction168____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6668);
+  }
+  REGB0 = ATTR_parser___ReduceAction168____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction168___init(val_t p0, val_t p1, int* init_table){
+  int itpos171 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction168].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos171]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6671;
+  fra.me.meth = LOCATE_parser___ReduceAction168___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6671 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction168____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos171] = 1;
+  return;
+}
+void parser___ReduceAction169___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 = 6675;
+  fra.me.meth = LOCATE_parser___ReduceAction169___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6677 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6678 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6679 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6680 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6681 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6683 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6683);
+  }
+  /* ./parser//parser.nit:6684 */
+  fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* ./parser//parser.nit:6689 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:6690 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction169____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6690);
+  }
+  REGB0 = ATTR_parser___ReduceAction169____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction169___init(val_t p0, val_t p1, int* init_table){
+  int itpos172 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction169].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos172]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6693;
+  fra.me.meth = LOCATE_parser___ReduceAction169___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6693 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction169____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos172] = 1;
+  return;
+}
+void parser___ReduceAction170___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 = 6697;
+  fra.me.meth = LOCATE_parser___ReduceAction170___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:6699 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6700 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6701 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6702 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6703 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6704 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6706 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6706);
+  }
+  /* ./parser//parser.nit:6707 */
+  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:6709 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6709);
+  }
+  /* ./parser//parser.nit:6710 */
+  fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[3], fra.me.REG[6]);
+  /* ./parser//parser.nit:6715 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:6716 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction170____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6716);
+  }
+  REGB0 = ATTR_parser___ReduceAction170____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction170___init(val_t p0, val_t p1, int* init_table){
+  int itpos173 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction170].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos173]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6719;
+  fra.me.meth = LOCATE_parser___ReduceAction170___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6719 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction170____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos173] = 1;
+  return;
+}
+void parser___ReduceAction171___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 = 6723;
+  fra.me.meth = LOCATE_parser___ReduceAction171___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6725 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6726 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6727 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6728 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6730 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6730);
+  }
+  /* ./parser//parser.nit:6731 */
+  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:6732 */
+  fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], NIT_NULL, fra.me.REG[5]);
+  /* ./parser//parser.nit:6737 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:6738 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction171____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6738);
+  }
+  REGB0 = ATTR_parser___ReduceAction171____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction171___init(val_t p0, val_t p1, int* init_table){
+  int itpos174 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction171].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos174]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6741;
+  fra.me.meth = LOCATE_parser___ReduceAction171___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6741 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction171____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos174] = 1;
+  return;
+}
+void parser___ReduceAction172___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 = 6745;
+  fra.me.meth = LOCATE_parser___ReduceAction172___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:6747 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6748 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6749 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6750 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6751 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6753 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6753);
+  }
+  /* ./parser//parser.nit:6754 */
+  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:6756 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6756);
+  }
+  /* ./parser//parser.nit:6757 */
+  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:6758 */
+  fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], NIT_NULL, fra.me.REG[6]);
+  /* ./parser//parser.nit:6763 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:6764 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction172____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6764);
+  }
+  REGB0 = ATTR_parser___ReduceAction172____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction172___init(val_t p0, val_t p1, int* init_table){
+  int itpos175 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction172].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos175]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6767;
+  fra.me.meth = LOCATE_parser___ReduceAction172___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6767 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction172____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos175] = 1;
+  return;
+}
+void parser___ReduceAction173___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 = 6771;
+  fra.me.meth = LOCATE_parser___ReduceAction173___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6773 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6774 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6775 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6776 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6777 */
+  fra.me.REG[4] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[3], NIT_NULL, fra.me.REG[4]);
+  /* ./parser//parser.nit:6782 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:6783 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction173____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6783);
+  }
+  REGB0 = ATTR_parser___ReduceAction173____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction173___init(val_t p0, val_t p1, int* init_table){
+  int itpos176 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction173].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos176]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6786;
+  fra.me.meth = LOCATE_parser___ReduceAction173___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6786 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction173____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos176] = 1;
+  return;
+}
+void parser___ReduceAction174___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 = 6790;
+  fra.me.meth = LOCATE_parser___ReduceAction174___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6792 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6793 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6794 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6795 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6796 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6798 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6798);
+  }
+  /* ./parser//parser.nit:6799 */
+  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:6800 */
+  fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], NIT_NULL, fra.me.REG[5]);
+  /* ./parser//parser.nit:6805 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:6806 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction174____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6806);
+  }
+  REGB0 = ATTR_parser___ReduceAction174____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction174___init(val_t p0, val_t p1, int* init_table){
+  int itpos177 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction174].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos177]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6809;
+  fra.me.meth = LOCATE_parser___ReduceAction174___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6809 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction174____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos177] = 1;
+  return;
+}
+void parser___ReduceAction175___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 = 6813;
+  fra.me.meth = LOCATE_parser___ReduceAction175___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6815 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6816 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6817 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6818 */
+  fra.me.REG[4] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[3], NIT_NULL, fra.me.REG[4]);
+  /* ./parser//parser.nit:6823 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:6824 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction175____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6824);
+  }
+  REGB0 = ATTR_parser___ReduceAction175____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction175___init(val_t p0, val_t p1, int* init_table){
+  int itpos178 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction175].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos178]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6827;
+  fra.me.meth = LOCATE_parser___ReduceAction175___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6827 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction175____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos178] = 1;
+  return;
+}
+void parser___ReduceAction176___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 = 6831;
+  fra.me.meth = LOCATE_parser___ReduceAction176___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6833 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6834 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6835 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6836 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6838 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6838);
+  }
+  /* ./parser//parser.nit:6839 */
+  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:6840 */
+  fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], NIT_NULL, fra.me.REG[5]);
+  /* ./parser//parser.nit:6845 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:6846 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction176____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6846);
+  }
+  REGB0 = ATTR_parser___ReduceAction176____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction176___init(val_t p0, val_t p1, int* init_table){
+  int itpos179 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction176].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos179]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6849;
+  fra.me.meth = LOCATE_parser___ReduceAction176___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6849 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction176____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos179] = 1;
+  return;
+}
+void parser___ReduceAction177___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 = 6853;
+  fra.me.meth = LOCATE_parser___ReduceAction177___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6855 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6856 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6857 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6858 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6860 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6860);
+  }
+  /* ./parser//parser.nit:6861 */
+  fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* ./parser//parser.nit:6866 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:6867 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction177____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6867);
+  }
+  REGB0 = ATTR_parser___ReduceAction177____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction177___init(val_t p0, val_t p1, int* init_table){
+  int itpos180 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction177].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos180]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6870;
+  fra.me.meth = LOCATE_parser___ReduceAction177___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6870 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction177____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos180] = 1;
+  return;
+}
+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 = 6874;
+  fra.me.meth = LOCATE_parser___ReduceAction178___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:6876 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6877 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6878 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6879 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6880 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6882 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6882);
+  }
+  /* ./parser//parser.nit:6883 */
+  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:6885 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6885);
+  }
+  /* ./parser//parser.nit:6886 */
+  fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[3], fra.me.REG[6]);
+  /* ./parser//parser.nit:6891 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:6892 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction178____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6892);
+  }
+  REGB0 = ATTR_parser___ReduceAction178____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction178___init(val_t p0, val_t p1, int* init_table){
+  int itpos181 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction178].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos181]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6895;
+  fra.me.meth = LOCATE_parser___ReduceAction178___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6895 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction178____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos181] = 1;
+  return;
+}
+void parser___ReduceAction179___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 = 6899;
+  fra.me.meth = LOCATE_parser___ReduceAction179___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6901 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6902 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6903 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6904 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6905 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6906 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6907 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6909 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:6910 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:6912 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:6913 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction179____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6913);
+  }
+  REGB0 = ATTR_parser___ReduceAction179____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction179___init(val_t p0, val_t p1, int* init_table){
+  int itpos182 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction179].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos182]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6916;
+  fra.me.meth = LOCATE_parser___ReduceAction179___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6916 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction179____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos182] = 1;
+  return;
+}
+void parser___ReduceAction180___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 = 6920;
+  fra.me.meth = LOCATE_parser___ReduceAction180___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:6922 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6923 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6924 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6925 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6926 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6927 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6928 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6929 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6932 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6932);
+  }
+  /* ./parser//parser.nit:6933 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:6934 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:6936 */
+  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:6937 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:6938 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction180____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6938);
+  }
+  REGB0 = ATTR_parser___ReduceAction180____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction180___init(val_t p0, val_t p1, int* init_table){
+  int itpos183 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction180].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos183]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6941;
+  fra.me.meth = LOCATE_parser___ReduceAction180___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6941 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction180____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos183] = 1;
+  return;
+}
+void parser___ReduceAction181___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 = 6945;
+  fra.me.meth = LOCATE_parser___ReduceAction181___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6947 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6948 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6949 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6950 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6951 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:6952 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6953 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction181____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6953);
+  }
+  REGB0 = ATTR_parser___ReduceAction181____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction181___init(val_t p0, val_t p1, int* init_table){
+  int itpos184 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction181].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos184]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6956;
+  fra.me.meth = LOCATE_parser___ReduceAction181___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6956 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction181____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos184] = 1;
+  return;
+}
+void parser___ReduceAction182___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 = 6960;
+  fra.me.meth = LOCATE_parser___ReduceAction182___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6962 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6963 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6964 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6965 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6967 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6968 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction182____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6968);
+  }
+  REGB0 = ATTR_parser___ReduceAction182____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction182___init(val_t p0, val_t p1, int* init_table){
+  int itpos185 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction182].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos185]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6971;
+  fra.me.meth = LOCATE_parser___ReduceAction182___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6971 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction182____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos185] = 1;
+  return;
+}
+void parser___ReduceAction183___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 = 6975;
+  fra.me.meth = LOCATE_parser___ReduceAction183___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:6977 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6978 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6980 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6980);
+  }
+  /* ./parser//parser.nit:6981 */
+  fra.me.REG[3] = NEW_AParam_parser_prod___AParam___init_aparam(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* ./parser//parser.nit:6986 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:6987 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction183____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6987);
+  }
+  REGB0 = ATTR_parser___ReduceAction183____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction183___init(val_t p0, val_t p1, int* init_table){
+  int itpos186 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction183].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos186]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6990;
+  fra.me.meth = LOCATE_parser___ReduceAction183___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:6990 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction183____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos186] = 1;
+  return;
+}
+void parser___ReduceAction184___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 = 6994;
+  fra.me.meth = LOCATE_parser___ReduceAction184___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:6996 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:6997 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:6998 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7000 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7000);
+  }
+  /* ./parser//parser.nit:7002 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7002);
+  }
+  /* ./parser//parser.nit:7003 */
+  fra.me.REG[3] = NEW_AParam_parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:7008 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7009 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction184____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7009);
+  }
+  REGB0 = ATTR_parser___ReduceAction184____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction184___init(val_t p0, val_t p1, int* init_table){
+  int itpos187 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction184].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos187]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7012;
+  fra.me.meth = LOCATE_parser___ReduceAction184___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7012 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction184____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos187] = 1;
+  return;
+}
+void parser___ReduceAction185___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 = 7016;
+  fra.me.meth = LOCATE_parser___ReduceAction185___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7018 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7019 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7020 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7021 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7023 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7023);
+  }
+  /* ./parser//parser.nit:7025 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7025);
+  }
+  /* ./parser//parser.nit:7027 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TDotdotdot, ID_TDotdotdot)) /*cast nullable TDotdotdot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7027);
+  }
+  /* ./parser//parser.nit:7028 */
+  fra.me.REG[3] = NEW_AParam_parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:7033 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7034 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction185____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7034);
+  }
+  REGB0 = ATTR_parser___ReduceAction185____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction185___init(val_t p0, val_t p1, int* init_table){
+  int itpos188 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction185].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos188]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7037;
+  fra.me.meth = LOCATE_parser___ReduceAction185___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7037 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction185____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos188] = 1;
+  return;
+}
+void parser___ReduceAction186___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 = 7041;
+  fra.me.meth = LOCATE_parser___ReduceAction186___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7043 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7044 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7045 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7046 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7048 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7048);
+  }
+  /* ./parser//parser.nit:7049 */
+  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:7050 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:7051 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction186____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7051);
+  }
+  REGB0 = ATTR_parser___ReduceAction186____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction186___init(val_t p0, val_t p1, int* init_table){
+  int itpos189 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction186].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos189]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7054;
+  fra.me.meth = LOCATE_parser___ReduceAction186___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7054 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction186____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos189] = 1;
+  return;
+}
+void parser___ReduceAction187___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 = 7058;
+  fra.me.meth = LOCATE_parser___ReduceAction187___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7060 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7061 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7062 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7063 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7064 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7066 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7066);
+  }
+  /* ./parser//parser.nit:7068 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7068);
+  }
+  /* ./parser//parser.nit:7070 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7070);
+  }
+  /* ./parser//parser.nit:7071 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:7078 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7079 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction187____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7079);
+  }
+  REGB0 = ATTR_parser___ReduceAction187____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction187___init(val_t p0, val_t p1, int* init_table){
+  int itpos190 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction187].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos190]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7082;
+  fra.me.meth = LOCATE_parser___ReduceAction187___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7082 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction187____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos190] = 1;
+  return;
+}
+void parser___ReduceAction188___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 = 7086;
+  fra.me.meth = LOCATE_parser___ReduceAction188___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:7088 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7089 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7090 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7091 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7092 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7093 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7095 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7095);
+  }
+  /* ./parser//parser.nit:7097 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7097);
+  }
+  /* ./parser//parser.nit:7099 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7099);
+  }
+  /* ./parser//parser.nit:7101 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7101);
+  }
+  /* ./parser//parser.nit:7102 */
+  fra.me.REG[3] = NEW_AClosureDecl_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:7109 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7110 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction188____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7110);
+  }
+  REGB0 = ATTR_parser___ReduceAction188____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction188___init(val_t p0, val_t p1, int* init_table){
+  int itpos191 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction188].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos191]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7113;
+  fra.me.meth = LOCATE_parser___ReduceAction188___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7113 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction188____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos191] = 1;
+  return;
+}
+void parser___ReduceAction189___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 = 7117;
+  fra.me.meth = LOCATE_parser___ReduceAction189___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:7119 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7120 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7121 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7122 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7123 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7124 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7125 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7127 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7127);
+  }
+  /* ./parser//parser.nit:7129 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7129);
+  }
+  /* ./parser//parser.nit:7131 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7131);
+  }
+  /* ./parser//parser.nit:7133 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7133);
+  }
+  /* ./parser//parser.nit:7134 */
+  fra.me.REG[3] = NEW_AClosureDecl_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:7141 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7142 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction189____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7142);
+  }
+  REGB0 = ATTR_parser___ReduceAction189____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction189___init(val_t p0, val_t p1, int* init_table){
+  int itpos192 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction189].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos192]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7145;
+  fra.me.meth = LOCATE_parser___ReduceAction189___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7145 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction189____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos192] = 1;
+  return;
+}
+void parser___ReduceAction190___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 = 7149;
+  fra.me.meth = LOCATE_parser___ReduceAction190___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:7151 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7152 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7153 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7154 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7155 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7156 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7157 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7158 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7160 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7160);
+  }
+  /* ./parser//parser.nit:7162 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7162);
+  }
+  /* ./parser//parser.nit:7164 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7164);
+  }
+  /* ./parser//parser.nit:7166 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7166);
+  }
+  /* ./parser//parser.nit:7168 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7168);
+  }
+  /* ./parser//parser.nit:7169 */
+  fra.me.REG[3] = NEW_AClosureDecl_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:7176 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7177 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction190____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7177);
+  }
+  REGB0 = ATTR_parser___ReduceAction190____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction190___init(val_t p0, val_t p1, int* init_table){
+  int itpos193 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction190].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos193]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7180;
+  fra.me.meth = LOCATE_parser___ReduceAction190___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7180 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction190____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos193] = 1;
+  return;
+}
+void parser___ReduceAction191___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 = 7184;
+  fra.me.meth = LOCATE_parser___ReduceAction191___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:7186 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7187 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7188 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7189 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7190 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7191 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7192 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7193 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7195 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7195);
+  }
+  /* ./parser//parser.nit:7197 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7197);
+  }
+  /* ./parser//parser.nit:7199 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7199);
+  }
+  /* ./parser//parser.nit:7201 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7201);
+  }
+  /* ./parser//parser.nit:7202 */
+  fra.me.REG[3] = NEW_AClosureDecl_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:7209 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7210 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction191____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7210);
+  }
+  REGB0 = ATTR_parser___ReduceAction191____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction191___init(val_t p0, val_t p1, int* init_table){
+  int itpos194 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction191].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos194]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7213;
+  fra.me.meth = LOCATE_parser___ReduceAction191___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7213 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction191____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos194] = 1;
+  return;
+}
+void parser___ReduceAction192___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 = 7217;
+  fra.me.meth = LOCATE_parser___ReduceAction192___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:7219 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7220 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7221 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7222 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7223 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7224 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7225 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7226 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7227 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7229 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7229);
+  }
+  /* ./parser//parser.nit:7231 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7231);
+  }
+  /* ./parser//parser.nit:7233 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7233);
+  }
+  /* ./parser//parser.nit:7235 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7235);
+  }
+  /* ./parser//parser.nit:7237 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7237);
+  }
+  /* ./parser//parser.nit:7238 */
+  fra.me.REG[3] = NEW_AClosureDecl_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:7245 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7246 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction192____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7246);
+  }
+  REGB0 = ATTR_parser___ReduceAction192____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction192___init(val_t p0, val_t p1, int* init_table){
+  int itpos195 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction192].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos195]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7249;
+  fra.me.meth = LOCATE_parser___ReduceAction192___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7249 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction192____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos195] = 1;
+  return;
+}
+void parser___ReduceAction193___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 = 7253;
+  fra.me.meth = LOCATE_parser___ReduceAction193___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7255 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7256 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7258 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7258);
+  }
+  /* ./parser//parser.nit:7259 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:7263 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7264 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction193____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7264);
+  }
+  REGB0 = ATTR_parser___ReduceAction193____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction193___init(val_t p0, val_t p1, int* init_table){
+  int itpos196 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction193].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos196]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7267;
+  fra.me.meth = LOCATE_parser___ReduceAction193___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7267 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction193____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos196] = 1;
+  return;
+}
+void parser___ReduceAction194___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 = 7271;
+  fra.me.meth = LOCATE_parser___ReduceAction194___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7273 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7274 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7275 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7277 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7277);
+  }
+  /* ./parser//parser.nit:7278 */
+  fra.me.REG[4] = NEW_AType_parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* ./parser//parser.nit:7283 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:7284 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction194____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7284);
+  }
+  REGB0 = ATTR_parser___ReduceAction194____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction194___init(val_t p0, val_t p1, int* init_table){
+  int itpos197 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction194].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos197]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7287;
+  fra.me.meth = LOCATE_parser___ReduceAction194___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7287 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction194____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos197] = 1;
+  return;
+}
+void parser___ReduceAction195___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 = 7291;
+  fra.me.meth = LOCATE_parser___ReduceAction195___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7293 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7294 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7295 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7296 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7298 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwnullable, ID_TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7298);
+  }
+  /* ./parser//parser.nit:7300 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7300);
+  }
+  /* ./parser//parser.nit:7301 */
+  fra.me.REG[5] = NEW_AType_parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* ./parser//parser.nit:7306 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:7307 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction195____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7307);
+  }
+  REGB0 = ATTR_parser___ReduceAction195____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction195___init(val_t p0, val_t p1, int* init_table){
+  int itpos198 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction195].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos198]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7310;
+  fra.me.meth = LOCATE_parser___ReduceAction195___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7310 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction195____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos198] = 1;
+  return;
+}
+void parser___ReduceAction196___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 = 7314;
+  fra.me.meth = LOCATE_parser___ReduceAction196___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7316 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7317 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7318 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7319 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7320 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7321 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7322 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7323 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7325 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7325);
+  }
+  /* ./parser//parser.nit:7327 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7327);
+  }
+  /* ./parser//parser.nit:7328 */
+  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:7329 */
+  fra.me.REG[5] = NEW_AType_parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:7334 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:7335 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction196____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7335);
+  }
+  REGB0 = ATTR_parser___ReduceAction196____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction196___init(val_t p0, val_t p1, int* init_table){
+  int itpos199 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction196].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos199]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7338;
+  fra.me.meth = LOCATE_parser___ReduceAction196___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7338 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction196____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos199] = 1;
+  return;
+}
+void parser___ReduceAction197___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 = 7342;
+  fra.me.meth = LOCATE_parser___ReduceAction197___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:7344 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7345 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7346 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7347 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7348 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7349 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7350 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7351 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7352 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7354 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwnullable, ID_TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7354);
+  }
+  /* ./parser//parser.nit:7356 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7356);
+  }
+  /* ./parser//parser.nit:7358 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7358);
+  }
+  /* ./parser//parser.nit:7359 */
+  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:7360 */
+  fra.me.REG[6] = NEW_AType_parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* ./parser//parser.nit:7365 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:7366 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction197____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7366);
+  }
+  REGB0 = ATTR_parser___ReduceAction197____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction197___init(val_t p0, val_t p1, int* init_table){
+  int itpos200 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction197].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos200]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7369;
+  fra.me.meth = LOCATE_parser___ReduceAction197___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7369 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction197____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos200] = 1;
+  return;
+}
+void parser___ReduceAction198___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 = 7373;
+  fra.me.meth = LOCATE_parser___ReduceAction198___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7375 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7376 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7377 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7379 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:7380 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:7382 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:7383 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction198____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7383);
+  }
+  REGB0 = ATTR_parser___ReduceAction198____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction198___init(val_t p0, val_t p1, int* init_table){
+  int itpos201 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction198].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos201]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7386;
+  fra.me.meth = LOCATE_parser___ReduceAction198___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7386 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction198____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos201] = 1;
+  return;
+}
+void parser___ReduceAction199___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 = 7390;
+  fra.me.meth = LOCATE_parser___ReduceAction199___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7392 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7393 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7394 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7395 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7398 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7398);
+  }
+  /* ./parser//parser.nit:7399 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:7400 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:7402 */
+  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:7403 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:7404 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction199____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7404);
+  }
+  REGB0 = ATTR_parser___ReduceAction199____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction199___init(val_t p0, val_t p1, int* init_table){
+  int itpos202 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction199].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos202]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7407;
+  fra.me.meth = LOCATE_parser___ReduceAction199___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7407 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction199____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos202] = 1;
+  return;
+}
+void parser___ReduceAction200___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 = 7411;
+  fra.me.meth = LOCATE_parser___ReduceAction200___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7413 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7414 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7415 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7416 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7418 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7419 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction200____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7419);
+  }
+  REGB0 = ATTR_parser___ReduceAction200____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction200___init(val_t p0, val_t p1, int* init_table){
+  int itpos203 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction200].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos203]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7422;
+  fra.me.meth = LOCATE_parser___ReduceAction200___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7422 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction200____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos203] = 1;
+  return;
+}
+void parser___ReduceAction202___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 = 7426;
+  fra.me.meth = LOCATE_parser___ReduceAction202___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7428 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7429 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7430 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7433 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7434 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction202____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7434);
+  }
+  REGB0 = ATTR_parser___ReduceAction202____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction202___init(val_t p0, val_t p1, int* init_table){
+  int itpos204 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction202].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos204]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7437;
+  fra.me.meth = LOCATE_parser___ReduceAction202___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7437 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction202____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos204] = 1;
+  return;
+}
+void parser___ReduceAction203___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 = 7441;
+  fra.me.meth = LOCATE_parser___ReduceAction203___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7443 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7444 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7445 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7446 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7447 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:7450 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7451 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction203____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7451);
+  }
+  REGB0 = ATTR_parser___ReduceAction203____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction203___init(val_t p0, val_t p1, int* init_table){
+  int itpos205 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction203].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos205]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7454;
+  fra.me.meth = LOCATE_parser___ReduceAction203___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7454 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction203____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos205] = 1;
+  return;
+}
+void parser___ReduceAction204___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 = 7458;
+  fra.me.meth = LOCATE_parser___ReduceAction204___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7460 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7461 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7462 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7463 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:7466 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7467 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction204____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7467);
+  }
+  REGB0 = ATTR_parser___ReduceAction204____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction204___init(val_t p0, val_t p1, int* init_table){
+  int itpos206 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction204].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos206]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7470;
+  fra.me.meth = LOCATE_parser___ReduceAction204___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7470 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction204____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos206] = 1;
+  return;
+}
+void parser___ReduceAction205___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 = 7474;
+  fra.me.meth = LOCATE_parser___ReduceAction205___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7476 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7477 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7479 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7480 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction205____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7480);
+  }
+  REGB0 = ATTR_parser___ReduceAction205____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction205___init(val_t p0, val_t p1, int* init_table){
+  int itpos207 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction205].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos207]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7483;
+  fra.me.meth = LOCATE_parser___ReduceAction205___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7483 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction205____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos207] = 1;
+  return;
+}
+void parser___ReduceAction206___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 = 7487;
+  fra.me.meth = LOCATE_parser___ReduceAction206___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7489 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7490 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7491 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7493 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7493);
+  }
+  /* ./parser//parser.nit:7494 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:7495 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:7497 */
+  fra.me.REG[4] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4]);
+  /* ./parser//parser.nit:7500 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:7501 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction206____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7501);
+  }
+  REGB0 = ATTR_parser___ReduceAction206____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction206___init(val_t p0, val_t p1, int* init_table){
+  int itpos208 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction206].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos208]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7504;
+  fra.me.meth = LOCATE_parser___ReduceAction206___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7504 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction206____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos208] = 1;
+  return;
+}
+void parser___ReduceAction207___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 = 7508;
+  fra.me.meth = LOCATE_parser___ReduceAction207___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7510 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7511 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7512 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7513 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7515 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7515);
+  }
+  /* ./parser//parser.nit:7517 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7517);
+  }
+  /* ./parser//parser.nit:7518 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:7519 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:7521 */
+  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:7522 */
+  fra.me.REG[5] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5]);
+  /* ./parser//parser.nit:7525 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:7526 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction207____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7526);
+  }
+  REGB0 = ATTR_parser___ReduceAction207____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction207___init(val_t p0, val_t p1, int* init_table){
+  int itpos209 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction207].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos209]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7529;
+  fra.me.meth = LOCATE_parser___ReduceAction207___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7529 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction207____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos209] = 1;
+  return;
+}
+void parser___ReduceAction208___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 = 7533;
+  fra.me.meth = LOCATE_parser___ReduceAction208___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7535 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7536 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7537 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7538 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7540 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7540);
+  }
+  /* ./parser//parser.nit:7541 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:7542 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:7544 */
+  fra.me.REG[4] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4]);
+  /* ./parser//parser.nit:7547 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:7548 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction208____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7548);
+  }
+  REGB0 = ATTR_parser___ReduceAction208____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction208___init(val_t p0, val_t p1, int* init_table){
+  int itpos210 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction208].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos210]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7551;
+  fra.me.meth = LOCATE_parser___ReduceAction208___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7551 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction208____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos210] = 1;
+  return;
+}
+void parser___ReduceAction209___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 = 7555;
+  fra.me.meth = LOCATE_parser___ReduceAction209___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7557 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7558 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7559 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7560 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7561 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7563 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7563);
+  }
+  /* ./parser//parser.nit:7565 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7565);
+  }
+  /* ./parser//parser.nit:7566 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:7567 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:7569 */
+  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:7570 */
+  fra.me.REG[5] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5]);
+  /* ./parser//parser.nit:7573 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:7574 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction209____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7574);
+  }
+  REGB0 = ATTR_parser___ReduceAction209____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction209___init(val_t p0, val_t p1, int* init_table){
+  int itpos211 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction209].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos211]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7577;
+  fra.me.meth = LOCATE_parser___ReduceAction209___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7577 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction209____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos211] = 1;
+  return;
+}
+void parser___ReduceAction210___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 = 7581;
+  fra.me.meth = LOCATE_parser___ReduceAction210___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7583 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7584 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7585 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7587 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7588 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction210____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7588);
+  }
+  REGB0 = ATTR_parser___ReduceAction210____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction210___init(val_t p0, val_t p1, int* init_table){
+  int itpos212 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction210].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos212]) return;
+  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___ReduceAction210___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7591 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction210____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos212] = 1;
+  return;
+}
+void parser___ReduceAction213___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 = 7595;
+  fra.me.meth = LOCATE_parser___ReduceAction213___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7597 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7598 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7600 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwreturn, ID_TKwreturn)) /*cast nullable TKwreturn*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7600);
+  }
+  /* ./parser//parser.nit:7601 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:7605 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7606 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction213____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7606);
+  }
+  REGB0 = ATTR_parser___ReduceAction213____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction213___init(val_t p0, val_t p1, int* init_table){
+  int itpos213 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction213].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos213]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7609;
+  fra.me.meth = LOCATE_parser___ReduceAction213___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7609 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction213____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos213] = 1;
+  return;
+}
+void parser___ReduceAction214___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 = 7613;
+  fra.me.meth = LOCATE_parser___ReduceAction214___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7615 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7616 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7617 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7619 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwreturn, ID_TKwreturn)) /*cast nullable TKwreturn*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7619);
+  }
+  /* ./parser//parser.nit:7621 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7621);
+  }
+  /* ./parser//parser.nit:7622 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:7626 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7627 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction214____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7627);
+  }
+  REGB0 = ATTR_parser___ReduceAction214____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction214___init(val_t p0, val_t p1, int* init_table){
+  int itpos214 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction214].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos214]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7630;
+  fra.me.meth = LOCATE_parser___ReduceAction214___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7630 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction214____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos214] = 1;
+  return;
+}
+void parser___ReduceAction215___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 = 7634;
+  fra.me.meth = LOCATE_parser___ReduceAction215___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7636 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7637 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7639 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7639);
+  }
+  /* ./parser//parser.nit:7640 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* ./parser//parser.nit:7645 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7646 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction215____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7646);
+  }
+  REGB0 = ATTR_parser___ReduceAction215____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction215___init(val_t p0, val_t p1, int* init_table){
+  int itpos215 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction215].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos215]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7649;
+  fra.me.meth = LOCATE_parser___ReduceAction215___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7649 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction215____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos215] = 1;
+  return;
+}
+void parser___ReduceAction216___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 = 7653;
+  fra.me.meth = LOCATE_parser___ReduceAction216___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7655 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7656 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7657 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7659 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7659);
+  }
+  /* ./parser//parser.nit:7661 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7661);
+  }
+  /* ./parser//parser.nit:7662 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:7667 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7668 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction216____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7668);
+  }
+  REGB0 = ATTR_parser___ReduceAction216____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction216___init(val_t p0, val_t p1, int* init_table){
+  int itpos216 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction216].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos216]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7671;
+  fra.me.meth = LOCATE_parser___ReduceAction216___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7671 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction216____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos216] = 1;
+  return;
+}
+void parser___ReduceAction217___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 = 7675;
+  fra.me.meth = LOCATE_parser___ReduceAction217___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7677 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7678 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7679 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7681 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7681);
+  }
+  /* ./parser//parser.nit:7683 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7683);
+  }
+  /* ./parser//parser.nit:7684 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:7689 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7690 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction217____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7690);
+  }
+  REGB0 = ATTR_parser___ReduceAction217____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction217___init(val_t p0, val_t p1, int* init_table){
+  int itpos217 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction217].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos217]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7693;
+  fra.me.meth = LOCATE_parser___ReduceAction217___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7693 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction217____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos217] = 1;
+  return;
+}
+void parser___ReduceAction218___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 = 7697;
+  fra.me.meth = LOCATE_parser___ReduceAction218___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7699 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7700 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7701 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7702 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7704 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7704);
+  }
+  /* ./parser//parser.nit:7706 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7706);
+  }
+  /* ./parser//parser.nit:7708 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7708);
+  }
+  /* ./parser//parser.nit:7709 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:7714 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7715 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction218____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7715);
+  }
+  REGB0 = ATTR_parser___ReduceAction218____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction218___init(val_t p0, val_t p1, int* init_table){
+  int itpos218 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction218].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos218]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7718;
+  fra.me.meth = LOCATE_parser___ReduceAction218___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7718 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction218____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos218] = 1;
+  return;
+}
+void parser___ReduceAction219___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 = 7722;
+  fra.me.meth = LOCATE_parser___ReduceAction219___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7724 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7725 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7727 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwabort, ID_TKwabort)) /*cast nullable TKwabort*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7727);
+  }
+  /* ./parser//parser.nit:7728 */
+  fra.me.REG[3] = NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:7731 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7732 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction219____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7732);
+  }
+  REGB0 = ATTR_parser___ReduceAction219____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction219___init(val_t p0, val_t p1, int* init_table){
+  int itpos219 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction219].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos219]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7735;
+  fra.me.meth = LOCATE_parser___ReduceAction219___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7735 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction219____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos219] = 1;
+  return;
+}
+void parser___ReduceAction220___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 = 7739;
+  fra.me.meth = LOCATE_parser___ReduceAction220___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:7741 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7742 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7744 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7744);
+  }
+  /* ./parser//parser.nit:7745 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* ./parser//parser.nit:7750 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7751 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction220____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7751);
+  }
+  REGB0 = ATTR_parser___ReduceAction220____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction220___init(val_t p0, val_t p1, int* init_table){
+  int itpos220 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction220].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos220]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7754;
+  fra.me.meth = LOCATE_parser___ReduceAction220___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7754 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction220____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos220] = 1;
+  return;
+}
+void parser___ReduceAction221___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 = 7758;
+  fra.me.meth = LOCATE_parser___ReduceAction221___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7760 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7761 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7762 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7764 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7764);
+  }
+  /* ./parser//parser.nit:7766 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7766);
+  }
+  /* ./parser//parser.nit:7767 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:7772 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7773 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction221____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7773);
+  }
+  REGB0 = ATTR_parser___ReduceAction221____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction221___init(val_t p0, val_t p1, int* init_table){
+  int itpos221 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction221].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos221]) return;
+  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___ReduceAction221___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7776 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction221____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos221] = 1;
+  return;
+}
+void parser___ReduceAction222___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 = 7780;
+  fra.me.meth = LOCATE_parser___ReduceAction222___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:7782 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7783 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7784 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7786 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7786);
+  }
+  /* ./parser//parser.nit:7788 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7788);
+  }
+  /* ./parser//parser.nit:7789 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:7794 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7795 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction222____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7795);
+  }
+  REGB0 = ATTR_parser___ReduceAction222____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction222___init(val_t p0, val_t p1, int* init_table){
+  int itpos222 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction222].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos222]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7798;
+  fra.me.meth = LOCATE_parser___ReduceAction222___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7798 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction222____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos222] = 1;
+  return;
+}
+void parser___ReduceAction223___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 = 7802;
+  fra.me.meth = LOCATE_parser___ReduceAction223___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7804 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7805 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7806 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7807 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7809 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7809);
+  }
+  /* ./parser//parser.nit:7811 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7811);
+  }
+  /* ./parser//parser.nit:7813 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7813);
+  }
+  /* ./parser//parser.nit:7814 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:7819 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:7820 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction223____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7820);
+  }
+  REGB0 = ATTR_parser___ReduceAction223____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction223___init(val_t p0, val_t p1, int* init_table){
+  int itpos223 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction223].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos223]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7823;
+  fra.me.meth = LOCATE_parser___ReduceAction223___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7823 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction223____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos223] = 1;
+  return;
+}
+void parser___ReduceAction230___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 = 7827;
+  fra.me.meth = LOCATE_parser___ReduceAction230___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:7829 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7830 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7831 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7832 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7833 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7834 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7835 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7836 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7838 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7838);
+  }
+  /* ./parser//parser.nit:7840 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7840);
+  }
+  /* ./parser//parser.nit:7842 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7842);
+  }
+  /* ./parser//parser.nit:7843 */
+  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:7844 */
+  fra.me.REG[7] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:7850 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:7851 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction230____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7851);
+  }
+  REGB0 = ATTR_parser___ReduceAction230____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction230___init(val_t p0, val_t p1, int* init_table){
+  int itpos224 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction230].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos224]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7854;
+  fra.me.meth = LOCATE_parser___ReduceAction230___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7854 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction230____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos224] = 1;
+  return;
+}
+void parser___ReduceAction231___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 = 7858;
+  fra.me.meth = LOCATE_parser___ReduceAction231___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:7860 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7861 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7862 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7863 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7864 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7865 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:7868 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7868);
+  }
+  /* ./parser//parser.nit:7870 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7870);
+  }
+  /* ./parser//parser.nit:7871 */
+  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:7872 */
+  fra.me.REG[6] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[7], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:7878 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:7879 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction231____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7879);
+  }
+  REGB0 = ATTR_parser___ReduceAction231____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction231___init(val_t p0, val_t p1, int* init_table){
+  int itpos225 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction231].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos225]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7882;
+  fra.me.meth = LOCATE_parser___ReduceAction231___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7882 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction231____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos225] = 1;
+  return;
+}
+void parser___ReduceAction232___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 = 7886;
+  fra.me.meth = LOCATE_parser___ReduceAction232___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:7888 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7889 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7890 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7891 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7892 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7893 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7894 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7895 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7896 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7898 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7898);
+  }
+  /* ./parser//parser.nit:7900 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7900);
+  }
+  /* ./parser//parser.nit:7902 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7902);
+  }
+  /* ./parser//parser.nit:7903 */
+  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:7905 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7905);
+  }
+  /* ./parser//parser.nit:7906 */
+  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:7907 */
+  fra.me.REG[8] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[8]);
+  /* ./parser//parser.nit:7913 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* ./parser//parser.nit:7914 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction232____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7914);
+  }
+  REGB0 = ATTR_parser___ReduceAction232____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction232___init(val_t p0, val_t p1, int* init_table){
+  int itpos226 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction232].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos226]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7917;
+  fra.me.meth = LOCATE_parser___ReduceAction232___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7917 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction232____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos226] = 1;
+  return;
+}
+void parser___ReduceAction233___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 = 7921;
+  fra.me.meth = LOCATE_parser___ReduceAction233___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:7923 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7924 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7925 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7926 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7927 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7928 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7929 */
+  fra.me.REG[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:7932 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7932);
+  }
+  /* ./parser//parser.nit:7934 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7934);
+  }
+  /* ./parser//parser.nit:7935 */
+  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:7937 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7937);
+  }
+  /* ./parser//parser.nit:7938 */
+  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:7939 */
+  fra.me.REG[7] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[8], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:7945 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:7946 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction233____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7946);
+  }
+  REGB0 = ATTR_parser___ReduceAction233____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction233___init(val_t p0, val_t p1, int* init_table){
+  int itpos227 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction233].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos227]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7949;
+  fra.me.meth = LOCATE_parser___ReduceAction233___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7949 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction233____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos227] = 1;
+  return;
+}
+void parser___ReduceAction234___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 = 7953;
+  fra.me.meth = LOCATE_parser___ReduceAction234___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:7955 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7956 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7957 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7958 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7960 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwsuper, ID_TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7960);
+  }
+  /* ./parser//parser.nit:7962 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7962);
+  }
+  /* ./parser//parser.nit:7963 */
+  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:7964 */
+  fra.me.REG[5] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:7969 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:7970 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction234____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7970);
+  }
+  REGB0 = ATTR_parser___ReduceAction234____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction234___init(val_t p0, val_t p1, int* init_table){
+  int itpos228 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction234].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos228]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7973;
+  fra.me.meth = LOCATE_parser___ReduceAction234___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:7973 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction234____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos228] = 1;
+  return;
+}
+void parser___ReduceAction235___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 = 7977;
+  fra.me.meth = LOCATE_parser___ReduceAction235___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:7979 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7980 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7981 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7982 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7983 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:7985 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AQualified, ID_AQualified)) /*cast nullable AQualified*/;
+  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_TKwsuper, ID_TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7987);
+  }
+  /* ./parser//parser.nit:7989 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7989);
+  }
+  /* ./parser//parser.nit:7990 */
+  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:7991 */
+  fra.me.REG[6] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* ./parser//parser.nit:7996 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:7997 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction235____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7997);
+  }
+  REGB0 = ATTR_parser___ReduceAction235____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction235___init(val_t p0, val_t p1, int* init_table){
+  int itpos229 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction235].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos229]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8000;
+  fra.me.meth = LOCATE_parser___ReduceAction235___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8000 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction235____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos229] = 1;
+  return;
+}
+void parser___ReduceAction236___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 = 8004;
+  fra.me.meth = LOCATE_parser___ReduceAction236___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8006 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8007 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8008 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8009 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8010 */
+  fra.me.REG[5] = 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] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8014 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8014);
+  }
+  /* ./parser//parser.nit:8016 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  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_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8018);
+  }
+  /* ./parser//parser.nit:8019 */
+  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:8020 */
+  fra.me.REG[6] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* ./parser//parser.nit:8025 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:8026 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction236____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8026);
+  }
+  REGB0 = ATTR_parser___ReduceAction236____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction236___init(val_t p0, val_t p1, int* init_table){
+  int itpos230 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction236].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos230]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8029;
+  fra.me.meth = LOCATE_parser___ReduceAction236___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8029 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction236____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos230] = 1;
+  return;
+}
+void parser___ReduceAction237___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 = 8033;
+  fra.me.meth = LOCATE_parser___ReduceAction237___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8035 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8036 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8037 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8038 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8039 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:8042 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8042);
+  }
+  /* ./parser//parser.nit:8044 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8044);
+  }
+  /* ./parser//parser.nit:8045 */
+  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:8046 */
+  fra.me.REG[5] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[6], fra.me.REG[4], fra.me.REG[5]);
+  /* ./parser//parser.nit:8051 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:8052 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction237____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8052);
+  }
+  REGB0 = ATTR_parser___ReduceAction237____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction237___init(val_t p0, val_t p1, int* init_table){
+  int itpos231 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction237].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos231]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8055;
+  fra.me.meth = LOCATE_parser___ReduceAction237___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8055 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction237____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos231] = 1;
+  return;
+}
+void parser___ReduceAction238___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 = 8059;
+  fra.me.meth = LOCATE_parser___ReduceAction238___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:8061 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8062 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8063 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8065 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwlabel, ID_TKwlabel)) /*cast nullable TKwlabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8065);
+  }
+  /* ./parser//parser.nit:8067 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8067);
+  }
+  /* ./parser//parser.nit:8068 */
+  fra.me.REG[3] = NEW_ALabel_parser_prod___ALabel___init_alabel(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8072 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8073 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction238____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8073);
+  }
+  REGB0 = ATTR_parser___ReduceAction238____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction238___init(val_t p0, val_t p1, int* init_table){
+  int itpos232 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction238].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos232]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8076;
+  fra.me.meth = LOCATE_parser___ReduceAction238___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8076 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction238____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos232] = 1;
+  return;
+}
+void parser___ReduceAction239___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 = 8080;
+  fra.me.meth = LOCATE_parser___ReduceAction239___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:8082 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8083 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8084 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8086 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:8087 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:8089 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:8090 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction239____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8090);
+  }
+  REGB0 = ATTR_parser___ReduceAction239____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction239___init(val_t p0, val_t p1, int* init_table){
+  int itpos233 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction239].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos233]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8093;
+  fra.me.meth = LOCATE_parser___ReduceAction239___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8093 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction239____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos233] = 1;
+  return;
+}
+void parser___ReduceAction240___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 = 8097;
+  fra.me.meth = LOCATE_parser___ReduceAction240___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:8099 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8100 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8101 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8102 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8105 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8105);
+  }
+  /* ./parser//parser.nit:8106 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:8107 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:8109 */
+  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:8110 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:8111 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction240____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8111);
+  }
+  REGB0 = ATTR_parser___ReduceAction240____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction240___init(val_t p0, val_t p1, int* init_table){
+  int itpos234 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction240].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos234]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8114;
+  fra.me.meth = LOCATE_parser___ReduceAction240___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8114 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction240____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos234] = 1;
+  return;
+}
+void parser___ReduceAction241___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 = 8118;
+  fra.me.meth = LOCATE_parser___ReduceAction241___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8120 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8121 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8122 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8123 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8124 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8125 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8126 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8128 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8128);
+  }
+  /* ./parser//parser.nit:8130 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8130);
+  }
+  /* ./parser//parser.nit:8132 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8132);
+  }
+  /* ./parser//parser.nit:8134 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8134);
+  }
+  /* ./parser//parser.nit:8136 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8136);
+  }
+  /* ./parser//parser.nit:8137 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8145 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8146 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction241____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8146);
+  }
+  REGB0 = ATTR_parser___ReduceAction241____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction241___init(val_t p0, val_t p1, int* init_table){
+  int itpos235 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction241].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos235]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8149;
+  fra.me.meth = LOCATE_parser___ReduceAction241___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8149 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction241____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos235] = 1;
+  return;
+}
+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 = 8153;
+  fra.me.meth = LOCATE_parser___ReduceAction242___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8155 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8156 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8157 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8158 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8159 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8160 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8161 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8162 */
+  fra.me.REG[9] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8164 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8164);
+  }
+  /* ./parser//parser.nit:8166 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8166);
+  }
+  /* ./parser//parser.nit:8168 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8168);
+  }
+  /* ./parser//parser.nit:8169 */
+  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:8171 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8171);
+  }
+  /* ./parser//parser.nit:8173 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8173);
+  }
+  /* ./parser//parser.nit:8175 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8175);
+  }
+  /* ./parser//parser.nit:8176 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8184 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8185 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction242____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8185);
+  }
+  REGB0 = ATTR_parser___ReduceAction242____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction242___init(val_t p0, val_t p1, int* init_table){
+  int itpos236 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction242].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos236]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8188;
+  fra.me.meth = LOCATE_parser___ReduceAction242___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8188 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction242____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos236] = 1;
+  return;
+}
+void parser___ReduceAction243___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 = 8192;
+  fra.me.meth = LOCATE_parser___ReduceAction243___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8194 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8195 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8196 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8197 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8198 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8199 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8201 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8201);
+  }
+  /* ./parser//parser.nit:8203 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8203);
+  }
+  /* ./parser//parser.nit:8205 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8205);
+  }
+  /* ./parser//parser.nit:8207 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8207);
+  }
+  /* ./parser//parser.nit:8208 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8216 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8217 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction243____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8217);
+  }
+  REGB0 = ATTR_parser___ReduceAction243____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction243___init(val_t p0, val_t p1, int* init_table){
+  int itpos237 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction243].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos237]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8220;
+  fra.me.meth = LOCATE_parser___ReduceAction243___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8220 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction243____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos237] = 1;
+  return;
+}
+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 = 8224;
+  fra.me.meth = LOCATE_parser___ReduceAction244___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8226 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8227 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8228 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8229 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8230 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8231 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8232 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8234 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8234);
+  }
+  /* ./parser//parser.nit:8236 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8236);
+  }
+  /* ./parser//parser.nit:8238 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8238);
+  }
+  /* ./parser//parser.nit:8239 */
+  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:8241 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8241);
+  }
+  /* ./parser//parser.nit:8243 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8243);
+  }
+  /* ./parser//parser.nit:8244 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8252 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8253 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction244____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8253);
+  }
+  REGB0 = ATTR_parser___ReduceAction244____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction244___init(val_t p0, val_t p1, int* init_table){
+  int itpos238 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction244].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos238]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8256;
+  fra.me.meth = LOCATE_parser___ReduceAction244___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8256 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction244____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos238] = 1;
+  return;
+}
+void parser___ReduceAction245___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 = 8260;
+  fra.me.meth = LOCATE_parser___ReduceAction245___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8262 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8263 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8264 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8265 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8266 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8267 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8268 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8270 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8270);
+  }
+  /* ./parser//parser.nit:8272 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8272);
+  }
+  /* ./parser//parser.nit:8274 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8274);
+  }
+  /* ./parser//parser.nit:8275 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8283 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8284 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction245____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8284);
+  }
+  REGB0 = ATTR_parser___ReduceAction245____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction245___init(val_t p0, val_t p1, int* init_table){
+  int itpos239 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction245].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos239]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8287;
+  fra.me.meth = LOCATE_parser___ReduceAction245___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8287 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction245____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos239] = 1;
+  return;
+}
+void parser___ReduceAction246___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 = 8291;
+  fra.me.meth = LOCATE_parser___ReduceAction246___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8293 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8294 */
+  fra.me.REG[3] = 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8298 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8299 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8300 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8302 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8302);
+  }
+  /* ./parser//parser.nit:8304 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8304);
+  }
+  /* ./parser//parser.nit:8306 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8306);
+  }
+  /* ./parser//parser.nit:8307 */
+  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:8309 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8309);
+  }
+  /* ./parser//parser.nit:8310 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8318 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8319 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction246____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8319);
+  }
+  REGB0 = ATTR_parser___ReduceAction246____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction246___init(val_t p0, val_t p1, int* init_table){
+  int itpos240 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction246].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos240]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8322;
+  fra.me.meth = LOCATE_parser___ReduceAction246___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8322 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction246____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos240] = 1;
+  return;
+}
+void parser___ReduceAction247___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 = 8326;
+  fra.me.meth = LOCATE_parser___ReduceAction247___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8328 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8329 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8330 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8331 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8332 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8333 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8334 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8336 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8336);
+  }
+  /* ./parser//parser.nit:8338 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8338);
+  }
+  /* ./parser//parser.nit:8340 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8340);
+  }
+  /* ./parser//parser.nit:8342 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8342);
+  }
+  /* ./parser//parser.nit:8343 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8351 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8352 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction247____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8352);
+  }
+  REGB0 = ATTR_parser___ReduceAction247____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction247___init(val_t p0, val_t p1, int* init_table){
+  int itpos241 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction247].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos241]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8355;
+  fra.me.meth = LOCATE_parser___ReduceAction247___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8355 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction247____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos241] = 1;
+  return;
+}
+void parser___ReduceAction248___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 = 8359;
+  fra.me.meth = LOCATE_parser___ReduceAction248___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8361 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8362 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8363 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8364 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8365 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8366 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8367 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8368 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8370 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8370);
+  }
+  /* ./parser//parser.nit:8372 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8372);
+  }
+  /* ./parser//parser.nit:8374 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8374);
+  }
+  /* ./parser//parser.nit:8375 */
+  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:8377 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8377);
+  }
+  /* ./parser//parser.nit:8379 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8379);
+  }
+  /* ./parser//parser.nit:8380 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8388 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8389 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction248____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8389);
+  }
+  REGB0 = ATTR_parser___ReduceAction248____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction248___init(val_t p0, val_t p1, int* init_table){
+  int itpos242 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction248].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos242]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8392;
+  fra.me.meth = LOCATE_parser___ReduceAction248___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8392 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction248____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos242] = 1;
+  return;
+}
+void parser___ReduceAction249___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 = 8396;
+  fra.me.meth = LOCATE_parser___ReduceAction249___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8398 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8399 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8400 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8401 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8402 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8403 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8405 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8405);
+  }
+  /* ./parser//parser.nit:8407 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8407);
+  }
+  /* ./parser//parser.nit:8409 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8409);
+  }
+  /* ./parser//parser.nit:8410 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8418 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8419 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction249____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8419);
+  }
+  REGB0 = ATTR_parser___ReduceAction249____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction249___init(val_t p0, val_t p1, int* init_table){
+  int itpos243 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction249].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos243]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8422;
+  fra.me.meth = LOCATE_parser___ReduceAction249___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8422 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction249____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos243] = 1;
+  return;
+}
+void parser___ReduceAction250___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 = 8426;
+  fra.me.meth = LOCATE_parser___ReduceAction250___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8428 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8429 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8430 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8432 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8433 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8434 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8436 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8436);
+  }
+  /* ./parser//parser.nit:8438 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8438);
+  }
+  /* ./parser//parser.nit:8440 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8440);
+  }
+  /* ./parser//parser.nit:8441 */
+  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:8443 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8443);
+  }
+  /* ./parser//parser.nit:8444 */
+  fra.me.REG[3] = NEW_AClosureDef_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:8452 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8453 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction250____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8453);
+  }
+  REGB0 = ATTR_parser___ReduceAction250____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction250___init(val_t p0, val_t p1, int* init_table){
+  int itpos244 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction250].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos244]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8456;
+  fra.me.meth = LOCATE_parser___ReduceAction250___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8456 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction250____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos244] = 1;
+  return;
+}
+void parser___ReduceAction251___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 = 8460;
+  fra.me.meth = LOCATE_parser___ReduceAction251___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:8462 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8463 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8465 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8465);
+  }
+  /* ./parser//parser.nit:8466 */
+  fra.me.REG[3] = NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[3]);
+  /* ./parser//parser.nit:8469 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8470 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction251____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8470);
+  }
+  REGB0 = ATTR_parser___ReduceAction251____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction251___init(val_t p0, val_t p1, int* init_table){
+  int itpos245 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction251].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos245]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8473;
+  fra.me.meth = LOCATE_parser___ReduceAction251___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8473 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction251____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos245] = 1;
+  return;
+}
+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 = 8477;
+  fra.me.meth = LOCATE_parser___ReduceAction252___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:8479 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8480 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8482 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8482);
+  }
+  /* ./parser//parser.nit:8483 */
+  fra.me.REG[3] = NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[3]);
+  /* ./parser//parser.nit:8486 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8487 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction252____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8487);
+  }
+  REGB0 = ATTR_parser___ReduceAction252____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction252___init(val_t p0, val_t p1, int* init_table){
+  int itpos246 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction252].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos246]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8490;
+  fra.me.meth = LOCATE_parser___ReduceAction252___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8490 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction252____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos246] = 1;
+  return;
+}
+void parser___ReduceAction253___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 = 8494;
+  fra.me.meth = LOCATE_parser___ReduceAction253___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:8496 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8497 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8499 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8499);
+  }
+  /* ./parser//parser.nit:8500 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:8505 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8506 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction253____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8506);
+  }
+  REGB0 = ATTR_parser___ReduceAction253____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction253___init(val_t p0, val_t p1, int* init_table){
+  int itpos247 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction253].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos247]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8509;
+  fra.me.meth = LOCATE_parser___ReduceAction253___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8509 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction253____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos247] = 1;
+  return;
+}
+void parser___ReduceAction254___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 = 8513;
+  fra.me.meth = LOCATE_parser___ReduceAction254___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:8515 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8516 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8517 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8519 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  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_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8521);
+  }
+  /* ./parser//parser.nit:8522 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* ./parser//parser.nit:8529 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8530 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction254____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8530);
+  }
+  REGB0 = ATTR_parser___ReduceAction254____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction254___init(val_t p0, val_t p1, int* init_table){
+  int itpos248 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction254].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos248]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8533;
+  fra.me.meth = LOCATE_parser___ReduceAction254___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8533 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction254____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos248] = 1;
+  return;
+}
+void parser___ReduceAction255___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 = 8537;
+  fra.me.meth = LOCATE_parser___ReduceAction255___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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: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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8544 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8544);
+  }
+  /* ./parser//parser.nit:8546 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8546);
+  }
+  /* ./parser//parser.nit:8548 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8548);
+  }
+  /* ./parser//parser.nit:8549 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* ./parser//parser.nit:8556 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8557 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction255____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8557);
+  }
+  REGB0 = ATTR_parser___ReduceAction255____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction255___init(val_t p0, val_t p1, int* init_table){
+  int itpos249 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction255].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos249]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8560;
+  fra.me.meth = LOCATE_parser___ReduceAction255___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8560 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction255____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos249] = 1;
+  return;
+}
+void parser___ReduceAction256___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 = 8564;
+  fra.me.meth = LOCATE_parser___ReduceAction256___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8566 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8567 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8568 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8569 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8570 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8571 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8573 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8573);
+  }
+  /* ./parser//parser.nit:8575 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8575);
+  }
+  /* ./parser//parser.nit:8577 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8577);
+  }
+  /* ./parser//parser.nit:8579 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8579);
+  }
+  /* ./parser//parser.nit:8580 */
+  fra.me.REG[3] = NEW_AVardeclExpr_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:8587 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8588 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction256____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8588);
+  }
+  REGB0 = ATTR_parser___ReduceAction256____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction256___init(val_t p0, val_t p1, int* init_table){
+  int itpos250 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction256].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos250]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8591;
+  fra.me.meth = LOCATE_parser___ReduceAction256___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8591 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction256____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos250] = 1;
+  return;
+}
+void parser___ReduceAction257___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 = 8595;
+  fra.me.meth = LOCATE_parser___ReduceAction257___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8597 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8598 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8599 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8600 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8601 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8602 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8603 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8605 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8605);
+  }
+  /* ./parser//parser.nit:8607 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8607);
+  }
+  /* ./parser//parser.nit:8609 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8609);
+  }
+  /* ./parser//parser.nit:8611 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8611);
+  }
+  /* ./parser//parser.nit:8613 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8613);
+  }
+  /* ./parser//parser.nit:8614 */
+  fra.me.REG[3] = NEW_AVardeclExpr_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:8621 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8622 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction257____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8622);
+  }
+  REGB0 = ATTR_parser___ReduceAction257____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction257___init(val_t p0, val_t p1, int* init_table){
+  int itpos251 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction257].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos251]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8625;
+  fra.me.meth = LOCATE_parser___ReduceAction257___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8625 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction257____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos251] = 1;
+  return;
+}
+void parser___ReduceAction258___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 = 8629;
+  fra.me.meth = LOCATE_parser___ReduceAction258___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8631 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8632 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8633 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8634 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8635 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8636 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8637 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8639 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8639);
+  }
+  /* ./parser//parser.nit:8641 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8641);
+  }
+  /* ./parser//parser.nit:8643 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8643);
+  }
+  /* ./parser//parser.nit:8645 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8645);
+  }
+  /* ./parser//parser.nit:8646 */
+  fra.me.REG[3] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8652 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8653 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction258____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8653);
+  }
+  REGB0 = ATTR_parser___ReduceAction258____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction258___init(val_t p0, val_t p1, int* init_table){
+  int itpos252 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction258].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos252]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8656;
+  fra.me.meth = LOCATE_parser___ReduceAction258___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8656 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction258____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos252] = 1;
+  return;
+}
+void parser___ReduceAction259___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 = 8660;
+  fra.me.meth = LOCATE_parser___ReduceAction259___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8662 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8663 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8664 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8665 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8666 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:8669 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8669);
+  }
+  /* ./parser//parser.nit:8671 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8671);
+  }
+  /* ./parser//parser.nit:8673 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8673);
+  }
+  /* ./parser//parser.nit:8674 */
+  fra.me.REG[3] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8680 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8681 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction259____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8681);
+  }
+  REGB0 = ATTR_parser___ReduceAction259____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction259___init(val_t p0, val_t p1, int* init_table){
+  int itpos253 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction259].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos253]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8684;
+  fra.me.meth = LOCATE_parser___ReduceAction259___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8684 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction259____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos253] = 1;
+  return;
+}
+void parser___ReduceAction260___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 = 8688;
+  fra.me.meth = LOCATE_parser___ReduceAction260___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8690 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8694 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8695 */
+  fra.me.REG[7] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8698 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8700 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8700);
+  }
+  /* ./parser//parser.nit:8702 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8702);
+  }
+  /* ./parser//parser.nit:8704 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8704);
+  }
+  /* ./parser//parser.nit:8705 */
+  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:8707 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  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_AExpr, ID_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_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8717 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8718 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction260____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8718);
+  }
+  REGB0 = ATTR_parser___ReduceAction260____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction260___init(val_t p0, val_t p1, int* init_table){
+  int itpos254 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction260].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos254]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8721;
+  fra.me.meth = LOCATE_parser___ReduceAction260___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8721 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction260____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos254] = 1;
+  return;
+}
+void parser___ReduceAction261___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 = 8725;
+  fra.me.meth = LOCATE_parser___ReduceAction261___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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: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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8730 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8731 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8732 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8733 */
+  fra.me.REG[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:8736 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8736);
+  }
+  /* ./parser//parser.nit:8738 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
+  }
+  /* ./parser//parser.nit:8739 */
+  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:8741 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8741);
+  }
+  /* ./parser//parser.nit:8743 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8743);
+  }
+  /* ./parser//parser.nit:8744 */
+  fra.me.REG[3] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[8], fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8751 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8752 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction261____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8752);
+  }
+  REGB0 = ATTR_parser___ReduceAction261____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction261___init(val_t p0, val_t p1, int* init_table){
+  int itpos255 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction261].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos255]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8755;
+  fra.me.meth = LOCATE_parser___ReduceAction261___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8755 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction261____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos255] = 1;
+  return;
+}
+void parser___ReduceAction262___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 = 8759;
+  fra.me.meth = LOCATE_parser___ReduceAction262___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8761 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8762 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8763 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8764 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8765 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8766 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8768 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8768);
+  }
+  /* ./parser//parser.nit:8770 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8770);
+  }
+  /* ./parser//parser.nit:8771 */
+  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:8773 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8773);
+  }
+  /* ./parser//parser.nit:8775 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8775);
+  }
+  /* ./parser//parser.nit:8776 */
+  fra.me.REG[3] = NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8782 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8783 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction262____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8783);
+  }
+  REGB0 = ATTR_parser___ReduceAction262____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction262___init(val_t p0, val_t p1, int* init_table){
+  int itpos256 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction262].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos256]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8786;
+  fra.me.meth = LOCATE_parser___ReduceAction262___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8786 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction262____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos256] = 1;
+  return;
+}
+void parser___ReduceAction263___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 = 8790;
+  fra.me.meth = LOCATE_parser___ReduceAction263___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8792 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8793 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8794 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8795 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8796 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8797 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8798 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8800 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8800);
+  }
+  /* ./parser//parser.nit:8802 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8802);
+  }
+  /* ./parser//parser.nit:8804 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8804);
+  }
+  /* ./parser//parser.nit:8806 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8806);
+  }
+  /* ./parser//parser.nit:8807 */
+  fra.me.REG[3] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8813 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8814 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction263____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8814);
+  }
+  REGB0 = ATTR_parser___ReduceAction263____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction263___init(val_t p0, val_t p1, int* init_table){
+  int itpos257 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction263].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos257]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8817;
+  fra.me.meth = LOCATE_parser___ReduceAction263___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8817 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction263____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos257] = 1;
+  return;
+}
+void parser___ReduceAction264___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 = 8821;
+  fra.me.meth = LOCATE_parser___ReduceAction264___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:8823 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8824 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8825 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8826 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8827 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:8830 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8830);
+  }
+  /* ./parser//parser.nit:8832 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8832);
+  }
+  /* ./parser//parser.nit:8834 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8834);
+  }
+  /* ./parser//parser.nit:8835 */
+  fra.me.REG[3] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8841 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8842 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction264____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8842);
+  }
+  REGB0 = ATTR_parser___ReduceAction264____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction264___init(val_t p0, val_t p1, int* init_table){
+  int itpos258 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction264].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos258]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8845;
+  fra.me.meth = LOCATE_parser___ReduceAction264___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8845 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction264____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos258] = 1;
+  return;
+}
+void parser___ReduceAction265___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 = 8849;
+  fra.me.meth = LOCATE_parser___ReduceAction265___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8851 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8852 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8853 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8854 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8855 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8856 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8857 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8858 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8859 */
+  fra.me.REG[8] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8861 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8861);
+  }
+  /* ./parser//parser.nit:8863 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8863);
+  }
+  /* ./parser//parser.nit:8865 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8865);
+  }
+  /* ./parser//parser.nit:8866 */
+  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:8868 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8868);
+  }
+  /* ./parser//parser.nit:8870 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8870);
+  }
+  /* ./parser//parser.nit:8871 */
+  fra.me.REG[3] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8878 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8879 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction265____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8879);
+  }
+  REGB0 = ATTR_parser___ReduceAction265____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction265___init(val_t p0, val_t p1, int* init_table){
+  int itpos259 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction265].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos259]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8882;
+  fra.me.meth = LOCATE_parser___ReduceAction265___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8882 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction265____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos259] = 1;
+  return;
+}
+void parser___ReduceAction266___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 = 8886;
+  fra.me.meth = LOCATE_parser___ReduceAction266___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8888 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8889 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8890 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8891 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8892 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8893 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8894 */
+  fra.me.REG[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:8897 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8897);
+  }
+  /* ./parser//parser.nit:8899 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8899);
+  }
+  /* ./parser//parser.nit:8900 */
+  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:8902 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8902);
+  }
+  /* ./parser//parser.nit:8904 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8904);
+  }
+  /* ./parser//parser.nit:8905 */
+  fra.me.REG[3] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[8], fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8912 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8913 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction266____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8913);
+  }
+  REGB0 = ATTR_parser___ReduceAction266____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction266___init(val_t p0, val_t p1, int* init_table){
+  int itpos260 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction266].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos260]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8916;
+  fra.me.meth = LOCATE_parser___ReduceAction266___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8916 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction266____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos260] = 1;
+  return;
+}
+void parser___ReduceAction267___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 = 8920;
+  fra.me.meth = LOCATE_parser___ReduceAction267___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:8922 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8923 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8924 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8925 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8926 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8927 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:8929 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8929);
+  }
+  /* ./parser//parser.nit:8931 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8931);
+  }
+  /* ./parser//parser.nit:8932 */
+  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:8934 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8934);
+  }
+  /* ./parser//parser.nit:8936 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8936);
+  }
+  /* ./parser//parser.nit:8937 */
+  fra.me.REG[3] = NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:8943 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8944 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction267____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8944);
+  }
+  REGB0 = ATTR_parser___ReduceAction267____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction267___init(val_t p0, val_t p1, int* init_table){
+  int itpos261 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction267].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos261]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8947;
+  fra.me.meth = LOCATE_parser___ReduceAction267___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8947 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction267____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos261] = 1;
+  return;
+}
+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 = 8951;
+  fra.me.meth = LOCATE_parser___ReduceAction268___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:8953 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8954 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8956 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TPluseq, ID_TPluseq)) /*cast nullable TPluseq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8956);
+  }
+  /* ./parser//parser.nit:8957 */
+  fra.me.REG[3] = NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[3]);
+  /* ./parser//parser.nit:8960 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8961 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction268____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8961);
+  }
+  REGB0 = ATTR_parser___ReduceAction268____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction268___init(val_t p0, val_t p1, int* init_table){
+  int itpos262 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction268].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos262]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8964;
+  fra.me.meth = LOCATE_parser___ReduceAction268___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8964 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction268____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos262] = 1;
+  return;
+}
+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 = 8968;
+  fra.me.meth = LOCATE_parser___ReduceAction269___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:8970 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8971 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8973 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TMinuseq, ID_TMinuseq)) /*cast nullable TMinuseq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8973);
+  }
+  /* ./parser//parser.nit:8974 */
+  fra.me.REG[3] = NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[3]);
+  /* ./parser//parser.nit:8977 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:8978 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction269____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8978);
+  }
+  REGB0 = ATTR_parser___ReduceAction269____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction269___init(val_t p0, val_t p1, int* init_table){
+  int itpos263 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction269].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos263]) return;
+  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___ReduceAction269___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:8981 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction269____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos263] = 1;
+  return;
+}
+void parser___ReduceAction270___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 = 8985;
+  fra.me.meth = LOCATE_parser___ReduceAction270___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:8987 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:8988 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8989 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8990 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:8992 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8992);
+  }
+  /* ./parser//parser.nit:8994 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8994);
+  }
+  /* ./parser//parser.nit:8996 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8996);
+  }
+  /* ./parser//parser.nit:8997 */
+  fra.me.REG[3] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9002 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9003 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction270____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9003);
+  }
+  REGB0 = ATTR_parser___ReduceAction270____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction270___init(val_t p0, val_t p1, int* init_table){
+  int itpos264 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction270].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos264]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9006;
+  fra.me.meth = LOCATE_parser___ReduceAction270___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9006 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction270____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos264] = 1;
+  return;
+}
+void parser___ReduceAction271___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 = 9010;
+  fra.me.meth = LOCATE_parser___ReduceAction271___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9012 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9013 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9014 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9016 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9016);
+  }
+  /* ./parser//parser.nit:9018 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9018);
+  }
+  /* ./parser//parser.nit:9019 */
+  fra.me.REG[3] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:9024 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9025 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction271____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9025);
+  }
+  REGB0 = ATTR_parser___ReduceAction271____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction271___init(val_t p0, val_t p1, int* init_table){
+  int itpos265 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction271].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos265]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9028;
+  fra.me.meth = LOCATE_parser___ReduceAction271___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9028 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction271____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos265] = 1;
+  return;
+}
+void parser___ReduceAction272___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 = 9032;
+  fra.me.meth = LOCATE_parser___ReduceAction272___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:9034 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9035 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9036 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9037 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9038 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9039 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9040 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9041 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9042 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9044 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9044);
+  }
+  /* ./parser//parser.nit:9046 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9046);
+  }
+  /* ./parser//parser.nit:9048 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9048);
+  }
+  /* ./parser//parser.nit:9050 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9050);
+  }
+  /* ./parser//parser.nit:9051 */
+  fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9057 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9058 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction272____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9058);
+  }
+  REGB0 = ATTR_parser___ReduceAction272____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction272___init(val_t p0, val_t p1, int* init_table){
+  int itpos266 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction272].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos266]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9061;
+  fra.me.meth = LOCATE_parser___ReduceAction272___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9061 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction272____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos266] = 1;
+  return;
+}
+void parser___ReduceAction273___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 = 9065;
+  fra.me.meth = LOCATE_parser___ReduceAction273___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:9067 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9068 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9069 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9070 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9071 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9072 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9073 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9075 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9075);
+  }
+  /* ./parser//parser.nit:9077 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9077);
+  }
+  /* ./parser//parser.nit:9079 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9079);
+  }
+  /* ./parser//parser.nit:9080 */
+  fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:9086 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9087 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction273____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9087);
+  }
+  REGB0 = ATTR_parser___ReduceAction273____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction273___init(val_t p0, val_t p1, int* init_table){
+  int itpos267 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction273].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos267]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9090;
+  fra.me.meth = LOCATE_parser___ReduceAction273___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9090 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction273____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos267] = 1;
+  return;
+}
+void parser___ReduceAction274___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 = 9094;
+  fra.me.meth = LOCATE_parser___ReduceAction274___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:9096 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9097 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9098 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9099 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9100 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9101 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9102 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9103 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9104 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9106 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9106);
+  }
+  /* ./parser//parser.nit:9108 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9108);
+  }
+  /* ./parser//parser.nit:9110 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9110);
+  }
+  /* ./parser//parser.nit:9112 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9112);
+  }
+  /* ./parser//parser.nit:9113 */
+  fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9119 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9120 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction274____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9120);
+  }
+  REGB0 = ATTR_parser___ReduceAction274____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction274___init(val_t p0, val_t p1, int* init_table){
+  int itpos268 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction274].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos268]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9123;
+  fra.me.meth = LOCATE_parser___ReduceAction274___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9123 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction274____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos268] = 1;
+  return;
+}
+void parser___ReduceAction275___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 = 9127;
+  fra.me.meth = LOCATE_parser___ReduceAction275___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:9129 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9130 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9131 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9132 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9133 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9134 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9135 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9137 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9137);
+  }
+  /* ./parser//parser.nit:9139 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9139);
+  }
+  /* ./parser//parser.nit:9141 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9141);
+  }
+  /* ./parser//parser.nit:9142 */
+  fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:9148 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9149 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction275____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9149);
+  }
+  REGB0 = ATTR_parser___ReduceAction275____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction275___init(val_t p0, val_t p1, int* init_table){
+  int itpos269 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction275].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos269]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9152;
+  fra.me.meth = LOCATE_parser___ReduceAction275___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9152 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction275____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos269] = 1;
+  return;
+}
+void parser___ReduceAction276___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 = 9156;
+  fra.me.meth = LOCATE_parser___ReduceAction276___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:9158 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9159 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9160 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9161 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9162 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9163 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9164 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9165 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9167 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9167);
+  }
+  /* ./parser//parser.nit:9169 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9169);
+  }
+  /* ./parser//parser.nit:9171 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9171);
+  }
+  /* ./parser//parser.nit:9172 */
+  fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* ./parser//parser.nit:9178 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9179 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction276____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9179);
+  }
+  REGB0 = ATTR_parser___ReduceAction276____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction276___init(val_t p0, val_t p1, int* init_table){
+  int itpos270 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction276].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos270]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9182;
+  fra.me.meth = LOCATE_parser___ReduceAction276___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9182 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction276____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos270] = 1;
+  return;
+}
+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 = 9186;
+  fra.me.meth = LOCATE_parser___ReduceAction279___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:9188 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9189 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9190 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9191 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9193 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwloop, ID_TKwloop)) /*cast nullable TKwloop*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9193);
+  }
+  /* ./parser//parser.nit:9195 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9195);
+  }
+  /* ./parser//parser.nit:9197 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9197);
+  }
+  /* ./parser//parser.nit:9198 */
+  fra.me.REG[3] = NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9203 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9204 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction279____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9204);
+  }
+  REGB0 = ATTR_parser___ReduceAction279____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction279___init(val_t p0, val_t p1, int* init_table){
+  int itpos271 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction279].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos271]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9207;
+  fra.me.meth = LOCATE_parser___ReduceAction279___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9207 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction279____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos271] = 1;
+  return;
+}
+void parser___ReduceAction280___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 = 9211;
+  fra.me.meth = LOCATE_parser___ReduceAction280___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9213 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9214 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9215 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9217 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwloop, ID_TKwloop)) /*cast nullable TKwloop*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9217);
+  }
+  /* ./parser//parser.nit:9219 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9219);
+  }
+  /* ./parser//parser.nit:9220 */
+  fra.me.REG[3] = NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:9225 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9226 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction280____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9226);
+  }
+  REGB0 = ATTR_parser___ReduceAction280____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction280___init(val_t p0, val_t p1, int* init_table){
+  int itpos272 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction280].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos272]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9229;
+  fra.me.meth = LOCATE_parser___ReduceAction280___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9229 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction280____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos272] = 1;
+  return;
+}
+void parser___ReduceAction281___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 = 9233;
+  fra.me.meth = LOCATE_parser___ReduceAction281___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:9235 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9236 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9237 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9238 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9239 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9240 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9241 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9242 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9244 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwwhile, ID_TKwwhile)) /*cast nullable TKwwhile*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9244);
+  }
+  /* ./parser//parser.nit:9246 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9246);
+  }
+  /* ./parser//parser.nit:9248 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9248);
+  }
+  /* ./parser//parser.nit:9250 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9250);
+  }
+  /* ./parser//parser.nit:9252 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9252);
+  }
+  /* ./parser//parser.nit:9253 */
+  fra.me.REG[3] = NEW_AWhileExpr_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:9260 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9261 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction281____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9261);
+  }
+  REGB0 = ATTR_parser___ReduceAction281____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction281___init(val_t p0, val_t p1, int* init_table){
+  int itpos273 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction281].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos273]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9264;
+  fra.me.meth = LOCATE_parser___ReduceAction281___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9264 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction281____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos273] = 1;
+  return;
+}
+void parser___ReduceAction282___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 = 9268;
+  fra.me.meth = LOCATE_parser___ReduceAction282___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:9270 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9271 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9272 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9273 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9274 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9275 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9276 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9278 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwwhile, ID_TKwwhile)) /*cast nullable TKwwhile*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9278);
+  }
+  /* ./parser//parser.nit:9280 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9280);
+  }
+  /* ./parser//parser.nit:9282 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9282);
+  }
+  /* ./parser//parser.nit:9284 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9284);
+  }
+  /* ./parser//parser.nit:9285 */
+  fra.me.REG[3] = NEW_AWhileExpr_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:9292 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9293 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction282____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9293);
+  }
+  REGB0 = ATTR_parser___ReduceAction282____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction282___init(val_t p0, val_t p1, int* init_table){
+  int itpos274 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction282].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos274]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9296;
+  fra.me.meth = LOCATE_parser___ReduceAction282___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9296 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction282____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos274] = 1;
+  return;
+}
+void parser___ReduceAction283___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 = 9300;
+  fra.me.meth = LOCATE_parser___ReduceAction283___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:9302 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9303 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9304 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9305 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9306 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9307 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9308 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9309 */
+  fra.me.REG[7] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9312 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9313 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9315 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwfor, ID_TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9315);
+  }
+  /* ./parser//parser.nit:9317 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9317);
+  }
+  /* ./parser//parser.nit:9319 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9319);
+  }
+  /* ./parser//parser.nit:9321 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9321);
+  }
+  /* ./parser//parser.nit:9323 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9323);
+  }
+  /* ./parser//parser.nit:9325 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9325);
+  }
+  /* ./parser//parser.nit:9326 */
+  fra.me.REG[3] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(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:9334 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9335 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction283____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9335);
+  }
+  REGB0 = ATTR_parser___ReduceAction283____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction283___init(val_t p0, val_t p1, int* init_table){
+  int itpos275 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction283].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos275]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9338;
+  fra.me.meth = LOCATE_parser___ReduceAction283___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9338 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction283____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos275] = 1;
+  return;
+}
+void parser___ReduceAction284___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 = 9342;
+  fra.me.meth = LOCATE_parser___ReduceAction284___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:9344 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9345 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9346 */
+  fra.me.REG[4] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9351 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9352 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9353 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9354 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9356 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwfor, ID_TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9356);
+  }
+  /* ./parser//parser.nit:9358 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9358);
+  }
+  /* ./parser//parser.nit:9360 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9360);
+  }
+  /* ./parser//parser.nit:9362 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9362);
+  }
+  /* ./parser//parser.nit:9364 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9364);
+  }
+  /* ./parser//parser.nit:9365 */
+  fra.me.REG[3] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(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:9373 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9374 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction284____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9374);
+  }
+  REGB0 = ATTR_parser___ReduceAction284____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction284___init(val_t p0, val_t p1, int* init_table){
+  int itpos276 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction284].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos276]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9377;
+  fra.me.meth = LOCATE_parser___ReduceAction284___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9377 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction284____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos276] = 1;
+  return;
+}
+void parser___ReduceAction285___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 = 9381;
+  fra.me.meth = LOCATE_parser___ReduceAction285___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:9383 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9384 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9385 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9386 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9387 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9389 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9389);
+  }
+  /* ./parser//parser.nit:9391 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9391);
+  }
+  /* ./parser//parser.nit:9393 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9393);
+  }
+  /* ./parser//parser.nit:9394 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9400 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9401 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction285____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9401);
+  }
+  REGB0 = ATTR_parser___ReduceAction285____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction285___init(val_t p0, val_t p1, int* init_table){
+  int itpos277 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction285].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos277]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9404;
+  fra.me.meth = LOCATE_parser___ReduceAction285___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9404 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction285____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos277] = 1;
+  return;
+}
+void parser___ReduceAction286___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 = 9408;
+  fra.me.meth = LOCATE_parser___ReduceAction286___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:9410 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9411 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9412 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9413 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9414 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9415 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9417 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9417);
+  }
+  /* ./parser//parser.nit:9419 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9419);
+  }
+  /* ./parser//parser.nit:9421 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9421);
+  }
+  /* ./parser//parser.nit:9423 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9423);
+  }
+  /* ./parser//parser.nit:9424 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9430 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9431 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction286____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9431);
+  }
+  REGB0 = ATTR_parser___ReduceAction286____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction286___init(val_t p0, val_t p1, int* init_table){
+  int itpos278 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction286].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos278]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9434;
+  fra.me.meth = LOCATE_parser___ReduceAction286___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9434 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction286____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos278] = 1;
+  return;
+}
+void parser___ReduceAction287___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 = 9438;
+  fra.me.meth = LOCATE_parser___ReduceAction287___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9440 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9441 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9442 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9444 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9444);
+  }
+  /* ./parser//parser.nit:9446 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9446);
+  }
+  /* ./parser//parser.nit:9447 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:9453 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9454 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction287____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9454);
+  }
+  REGB0 = ATTR_parser___ReduceAction287____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction287___init(val_t p0, val_t p1, int* init_table){
+  int itpos279 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction287].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos279]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9457;
+  fra.me.meth = LOCATE_parser___ReduceAction287___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9457 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction287____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos279] = 1;
+  return;
+}
+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 = 9461;
+  fra.me.meth = LOCATE_parser___ReduceAction288___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:9463 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9464 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9465 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9466 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9468 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9468);
+  }
+  /* ./parser//parser.nit:9470 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9470);
+  }
+  /* ./parser//parser.nit:9472 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9472);
+  }
+  /* ./parser//parser.nit:9473 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* ./parser//parser.nit:9479 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9480 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction288____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9480);
+  }
+  REGB0 = ATTR_parser___ReduceAction288____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction288___init(val_t p0, val_t p1, int* init_table){
+  int itpos280 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction288].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos280]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9483;
+  fra.me.meth = LOCATE_parser___ReduceAction288___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9483 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction288____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos280] = 1;
+  return;
+}
+void parser___ReduceAction289___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 = 9487;
+  fra.me.meth = LOCATE_parser___ReduceAction289___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:9489 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9490 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9491 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9493 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9494 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction289____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9494);
+  }
+  REGB0 = ATTR_parser___ReduceAction289____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction289___init(val_t p0, val_t p1, int* init_table){
+  int itpos281 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction289].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos281]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9497;
+  fra.me.meth = LOCATE_parser___ReduceAction289___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9497 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction289____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos281] = 1;
+  return;
+}
+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 = 9501;
+  fra.me.meth = LOCATE_parser___ReduceAction293___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:9503 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9504 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9505 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9506 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9507 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:9508 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:9510 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9510);
+  }
+  /* ./parser//parser.nit:9512 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9512);
+  }
+  /* ./parser//parser.nit:9513 */
+  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:9515 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9515);
+  }
+  /* ./parser//parser.nit:9516 */
+  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:9517 */
+  fra.me.REG[7] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:9522 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:9523 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction293____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9523);
+  }
+  REGB0 = ATTR_parser___ReduceAction293____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction293___init(val_t p0, val_t p1, int* init_table){
+  int itpos282 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction293].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos282]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9526;
+  fra.me.meth = LOCATE_parser___ReduceAction293___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9526 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction293____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos282] = 1;
+  return;
+}
+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 = 9530;
+  fra.me.meth = LOCATE_parser___ReduceAction295___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:9532 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9533 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9534 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9535 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9536 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9537 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9538 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9539 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9540 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9541 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9542 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9543 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9545 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9545);
+  }
+  /* ./parser//parser.nit:9547 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9547);
+  }
+  /* ./parser//parser.nit:9549 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwthen, ID_TKwthen)) /*cast nullable TKwthen*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9549);
+  }
+  /* ./parser//parser.nit:9551 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9551);
+  }
+  /* ./parser//parser.nit:9553 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwelse, ID_TKwelse)) /*cast nullable TKwelse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9553);
+  }
+  /* ./parser//parser.nit:9555 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9555);
+  }
+  /* ./parser//parser.nit:9556 */
+  fra.me.REG[3] = NEW_AIfexprExpr_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:9564 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9565 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction295____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9565);
+  }
+  REGB0 = ATTR_parser___ReduceAction295____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction295___init(val_t p0, val_t p1, int* init_table){
+  int itpos283 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction295].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos283]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9568;
+  fra.me.meth = LOCATE_parser___ReduceAction295___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9568 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction295____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos283] = 1;
+  return;
+}
+void parser___ReduceAction297___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 = 9572;
+  fra.me.meth = LOCATE_parser___ReduceAction297___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9574 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9575 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9576 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9577 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9578 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9580 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9580);
+  }
+  /* ./parser//parser.nit:9582 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9582);
+  }
+  /* ./parser//parser.nit:9583 */
+  fra.me.REG[3] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9587 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9588 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction297____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9588);
+  }
+  REGB0 = ATTR_parser___ReduceAction297____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction297___init(val_t p0, val_t p1, int* init_table){
+  int itpos284 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction297].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos284]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9591;
+  fra.me.meth = LOCATE_parser___ReduceAction297___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9591 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction297____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos284] = 1;
+  return;
+}
+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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9595;
+  fra.me.meth = LOCATE_parser___ReduceAction298___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9597 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9598 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9599 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9600 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9601 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9603 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9603);
+  }
+  /* ./parser//parser.nit:9605 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9605);
+  }
+  /* ./parser//parser.nit:9606 */
+  fra.me.REG[3] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9610 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9611 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction298____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9611);
+  }
+  REGB0 = ATTR_parser___ReduceAction298____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction298___init(val_t p0, val_t p1, int* init_table){
+  int itpos285 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction298].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos285]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9614;
+  fra.me.meth = LOCATE_parser___ReduceAction298___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9614 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction298____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos285] = 1;
+  return;
+}
+void parser___ReduceAction299___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 = 9618;
+  fra.me.meth = LOCATE_parser___ReduceAction299___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9620 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9621 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9622 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9623 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9624 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9625 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9627 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9627);
+  }
+  /* ./parser//parser.nit:9629 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9629);
+  }
+  /* ./parser//parser.nit:9630 */
+  fra.me.REG[3] = NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9634 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9635 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction299____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9635);
+  }
+  REGB0 = ATTR_parser___ReduceAction299____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction299___init(val_t p0, val_t p1, int* init_table){
+  int itpos286 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction299].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos286]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9638;
+  fra.me.meth = LOCATE_parser___ReduceAction299___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9638 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction299____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos286] = 1;
+  return;
+}
+void parser___ReduceAction301___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 = 9642;
+  fra.me.meth = LOCATE_parser___ReduceAction301___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9644 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9645 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9646 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9647 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9649 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwnot, ID_TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9649);
+  }
+  /* ./parser//parser.nit:9651 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9651);
+  }
+  /* ./parser//parser.nit:9652 */
+  fra.me.REG[3] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9656 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9657 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction301____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9657);
+  }
+  REGB0 = ATTR_parser___ReduceAction301____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction301___init(val_t p0, val_t p1, int* init_table){
+  int itpos287 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction301].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos287]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9660;
+  fra.me.meth = LOCATE_parser___ReduceAction301___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9660 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction301____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos287] = 1;
+  return;
+}
+void parser___ReduceAction303___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 = 9664;
+  fra.me.meth = LOCATE_parser___ReduceAction303___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9666 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9667 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9668 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9669 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9670 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9672 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9672);
+  }
+  /* ./parser//parser.nit:9674 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9674);
+  }
+  /* ./parser//parser.nit:9675 */
+  fra.me.REG[3] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9679 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9680 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction303____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9680);
+  }
+  REGB0 = ATTR_parser___ReduceAction303____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction303___init(val_t p0, val_t p1, int* init_table){
+  int itpos288 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction303].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos288]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9683;
+  fra.me.meth = LOCATE_parser___ReduceAction303___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9683 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction303____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos288] = 1;
+  return;
+}
+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 = 9687;
+  fra.me.meth = LOCATE_parser___ReduceAction304___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9689 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9690 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9691 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9692 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9693 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9695 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9695);
+  }
+  /* ./parser//parser.nit:9697 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9697);
+  }
+  /* ./parser//parser.nit:9698 */
+  fra.me.REG[3] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9702 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9703 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction304____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9703);
+  }
+  REGB0 = ATTR_parser___ReduceAction304____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction304___init(val_t p0, val_t p1, int* init_table){
+  int itpos289 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction304].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos289]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9706;
+  fra.me.meth = LOCATE_parser___ReduceAction304___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9706 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction304____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos289] = 1;
+  return;
+}
+void parser___ReduceAction305___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 = 9710;
+  fra.me.meth = LOCATE_parser___ReduceAction305___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9712 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9713 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9714 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9715 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9716 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9718 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9718);
+  }
+  /* ./parser//parser.nit:9720 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9720);
+  }
+  /* ./parser//parser.nit:9721 */
+  fra.me.REG[3] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9725 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9726 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction305____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9726);
+  }
+  REGB0 = ATTR_parser___ReduceAction305____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction305___init(val_t p0, val_t p1, int* init_table){
+  int itpos290 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction305].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos290]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9729;
+  fra.me.meth = LOCATE_parser___ReduceAction305___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9729 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction305____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos290] = 1;
+  return;
+}
+void parser___ReduceAction306___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 = 9733;
+  fra.me.meth = LOCATE_parser___ReduceAction306___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9735 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9736 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9737 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9738 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9739 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9741 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9741);
+  }
+  /* ./parser//parser.nit:9743 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9743);
+  }
+  /* ./parser//parser.nit:9744 */
+  fra.me.REG[3] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9748 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9749 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction306____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9749);
+  }
+  REGB0 = ATTR_parser___ReduceAction306____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction306___init(val_t p0, val_t p1, int* init_table){
+  int itpos291 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction306].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos291]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9752;
+  fra.me.meth = LOCATE_parser___ReduceAction306___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9752 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction306____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos291] = 1;
+  return;
+}
+void parser___ReduceAction307___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 = 9756;
+  fra.me.meth = LOCATE_parser___ReduceAction307___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9758 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9759 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9760 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9761 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9762 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9764 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9764);
+  }
+  /* ./parser//parser.nit:9766 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9766);
+  }
+  /* ./parser//parser.nit:9767 */
+  fra.me.REG[3] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9771 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9772 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction307____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9772);
+  }
+  REGB0 = ATTR_parser___ReduceAction307____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction307___init(val_t p0, val_t p1, int* init_table){
+  int itpos292 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction307].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos292]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9775;
+  fra.me.meth = LOCATE_parser___ReduceAction307___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9775 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction307____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos292] = 1;
+  return;
+}
+void parser___ReduceAction308___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 = 9779;
+  fra.me.meth = LOCATE_parser___ReduceAction308___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9781 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9782 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9783 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9784 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9785 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9787 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9787);
+  }
+  /* ./parser//parser.nit:9789 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9789);
+  }
+  /* ./parser//parser.nit:9790 */
+  fra.me.REG[3] = NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9794 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9795 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction308____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9795);
+  }
+  REGB0 = ATTR_parser___ReduceAction308____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction308___init(val_t p0, val_t p1, int* init_table){
+  int itpos293 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction308].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos293]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9798;
+  fra.me.meth = LOCATE_parser___ReduceAction308___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9798 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction308____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos293] = 1;
+  return;
+}
+void parser___ReduceAction309___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 = 9802;
+  fra.me.meth = LOCATE_parser___ReduceAction309___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9804 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9805 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9806 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9807 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9808 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9810 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9810);
+  }
+  /* ./parser//parser.nit:9812 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9812);
+  }
+  /* ./parser//parser.nit:9813 */
+  fra.me.REG[3] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9817 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9818 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction309____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9818);
+  }
+  REGB0 = ATTR_parser___ReduceAction309____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction309___init(val_t p0, val_t p1, int* init_table){
+  int itpos294 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction309].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos294]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9821;
+  fra.me.meth = LOCATE_parser___ReduceAction309___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9821 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction309____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos294] = 1;
+  return;
+}
+void parser___ReduceAction310___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 = 9825;
+  fra.me.meth = LOCATE_parser___ReduceAction310___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9827 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9828 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9829 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9830 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9831 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9833 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9833);
+  }
+  /* ./parser//parser.nit:9835 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9835);
+  }
+  /* ./parser//parser.nit:9836 */
+  fra.me.REG[3] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9840 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9841 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction310____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9841);
+  }
+  REGB0 = ATTR_parser___ReduceAction310____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction310___init(val_t p0, val_t p1, int* init_table){
+  int itpos295 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction310].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos295]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9844;
+  fra.me.meth = LOCATE_parser___ReduceAction310___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9844 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction310____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos295] = 1;
+  return;
+}
+void parser___ReduceAction311___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 = 9848;
+  fra.me.meth = LOCATE_parser___ReduceAction311___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9850 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9851 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9852 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9853 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9854 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9856 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9856);
+  }
+  /* ./parser//parser.nit:9858 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9858);
+  }
+  /* ./parser//parser.nit:9859 */
+  fra.me.REG[3] = NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9863 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9864 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction311____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9864);
+  }
+  REGB0 = ATTR_parser___ReduceAction311____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction311___init(val_t p0, val_t p1, int* init_table){
+  int itpos296 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction311].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos296]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9867;
+  fra.me.meth = LOCATE_parser___ReduceAction311___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9867 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction311____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos296] = 1;
+  return;
+}
+void parser___ReduceAction312___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 = 9871;
+  fra.me.meth = LOCATE_parser___ReduceAction312___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9873 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9874 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9875 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9876 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9877 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9879 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9879);
+  }
+  /* ./parser//parser.nit:9881 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9881);
+  }
+  /* ./parser//parser.nit:9882 */
+  fra.me.REG[3] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9886 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9887 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction312____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9887);
+  }
+  REGB0 = ATTR_parser___ReduceAction312____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction312___init(val_t p0, val_t p1, int* init_table){
+  int itpos297 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction312].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos297]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9890;
+  fra.me.meth = LOCATE_parser___ReduceAction312___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9890 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction312____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos297] = 1;
+  return;
+}
+void parser___ReduceAction313___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 = 9894;
+  fra.me.meth = LOCATE_parser___ReduceAction313___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9896 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9897 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9898 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9899 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9900 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9902 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9902);
+  }
+  /* ./parser//parser.nit:9904 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9904);
+  }
+  /* ./parser//parser.nit:9905 */
+  fra.me.REG[3] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9909 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9910 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction313____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9910);
+  }
+  REGB0 = ATTR_parser___ReduceAction313____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction313___init(val_t p0, val_t p1, int* init_table){
+  int itpos298 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction313].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos298]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9913;
+  fra.me.meth = LOCATE_parser___ReduceAction313___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9913 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction313____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos298] = 1;
+  return;
+}
+void parser___ReduceAction315___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 = 9917;
+  fra.me.meth = LOCATE_parser___ReduceAction315___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9919 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9920 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9921 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9922 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9923 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9925 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9925);
+  }
+  /* ./parser//parser.nit:9927 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9927);
+  }
+  /* ./parser//parser.nit:9928 */
+  fra.me.REG[3] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9932 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9933 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction315____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9933);
+  }
+  REGB0 = ATTR_parser___ReduceAction315____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction315___init(val_t p0, val_t p1, int* init_table){
+  int itpos299 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction315].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos299]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9936;
+  fra.me.meth = LOCATE_parser___ReduceAction315___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9936 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction315____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos299] = 1;
+  return;
+}
+void parser___ReduceAction316___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 = 9940;
+  fra.me.meth = LOCATE_parser___ReduceAction316___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9942 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9943 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9944 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9945 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9946 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9948 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9948);
+  }
+  /* ./parser//parser.nit:9950 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9950);
+  }
+  /* ./parser//parser.nit:9951 */
+  fra.me.REG[3] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9955 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9956 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction316____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9956);
+  }
+  REGB0 = ATTR_parser___ReduceAction316____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction316___init(val_t p0, val_t p1, int* init_table){
+  int itpos300 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction316].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos300]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9959;
+  fra.me.meth = LOCATE_parser___ReduceAction316___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9959 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction316____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos300] = 1;
+  return;
+}
+void parser___ReduceAction318___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 = 9963;
+  fra.me.meth = LOCATE_parser___ReduceAction318___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9965 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9966 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9967 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9968 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9969 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9971 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9971);
+  }
+  /* ./parser//parser.nit:9973 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9973);
+  }
+  /* ./parser//parser.nit:9974 */
+  fra.me.REG[3] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:9978 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:9979 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction318____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9979);
+  }
+  REGB0 = ATTR_parser___ReduceAction318____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction318___init(val_t p0, val_t p1, int* init_table){
+  int itpos301 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction318].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos301]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9982;
+  fra.me.meth = LOCATE_parser___ReduceAction318___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:9982 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction318____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos301] = 1;
+  return;
+}
+void parser___ReduceAction319___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 = 9986;
+  fra.me.meth = LOCATE_parser___ReduceAction319___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:9988 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:9989 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9990 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9991 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9992 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9994 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9994);
+  }
+  /* ./parser//parser.nit:9996 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9996);
+  }
+  /* ./parser//parser.nit:9997 */
+  fra.me.REG[3] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10001 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10002 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction319____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10002);
+  }
+  REGB0 = ATTR_parser___ReduceAction319____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction319___init(val_t p0, val_t p1, int* init_table){
+  int itpos302 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction319].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos302]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10005;
+  fra.me.meth = LOCATE_parser___ReduceAction319___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10005 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction319____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos302] = 1;
+  return;
+}
+void parser___ReduceAction320___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 = 10009;
+  fra.me.meth = LOCATE_parser___ReduceAction320___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10011 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10012 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10013 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10014 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10015 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10017 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10017);
+  }
+  /* ./parser//parser.nit:10019 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10019);
+  }
+  /* ./parser//parser.nit:10020 */
+  fra.me.REG[3] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10024 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10025 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction320____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10025);
+  }
+  REGB0 = ATTR_parser___ReduceAction320____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction320___init(val_t p0, val_t p1, int* init_table){
+  int itpos303 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction320].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos303]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10028;
+  fra.me.meth = LOCATE_parser___ReduceAction320___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10028 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction320____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos303] = 1;
+  return;
+}
+void parser___ReduceAction322___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 = 10032;
+  fra.me.meth = LOCATE_parser___ReduceAction322___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10034 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10035 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10036 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10037 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10039 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TMinus, ID_TMinus)) /*cast nullable TMinus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10039);
+  }
+  /* ./parser//parser.nit:10041 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10041);
+  }
+  /* ./parser//parser.nit:10042 */
+  fra.me.REG[3] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10046 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10047 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction322____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10047);
+  }
+  REGB0 = ATTR_parser___ReduceAction322____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction322___init(val_t p0, val_t p1, int* init_table){
+  int itpos304 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction322].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos304]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10050;
+  fra.me.meth = LOCATE_parser___ReduceAction322___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10050 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction322____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos304] = 1;
+  return;
+}
+void parser___ReduceAction323___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 = 10054;
+  fra.me.meth = LOCATE_parser___ReduceAction323___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10056 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10057 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10058 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10059 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10061 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwonce, ID_TKwonce)) /*cast nullable TKwonce*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10061);
+  }
+  /* ./parser//parser.nit:10063 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10063);
+  }
+  /* ./parser//parser.nit:10064 */
+  fra.me.REG[3] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10068 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10069 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction323____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10069);
+  }
+  REGB0 = ATTR_parser___ReduceAction323____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction323___init(val_t p0, val_t p1, int* init_table){
+  int itpos305 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction323].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos305]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10072;
+  fra.me.meth = LOCATE_parser___ReduceAction323___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10072 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction323____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos305] = 1;
+  return;
+}
+void parser___ReduceAction325___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 = 10076;
+  fra.me.meth = LOCATE_parser___ReduceAction325___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:10078 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10079 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10080 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10081 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10082 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10083 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10085 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwnew, ID_TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10085);
+  }
+  /* ./parser//parser.nit:10087 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10087);
+  }
+  /* ./parser//parser.nit:10089 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10089);
+  }
+  /* ./parser//parser.nit:10090 */
+  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:10091 */
+  fra.me.REG[6] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[6]);
+  /* ./parser//parser.nit:10097 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:10098 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction325____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10098);
+  }
+  REGB0 = ATTR_parser___ReduceAction325____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction325___init(val_t p0, val_t p1, int* init_table){
+  int itpos306 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction325].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos306]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10101;
+  fra.me.meth = LOCATE_parser___ReduceAction325___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10101 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction325____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos306] = 1;
+  return;
+}
+void parser___ReduceAction326___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 = 10105;
+  fra.me.meth = LOCATE_parser___ReduceAction326___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10107 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10108 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10109 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10110 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10111 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10112 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10114 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwisset, ID_TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10114);
+  }
+  /* ./parser//parser.nit:10116 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10116);
+  }
+  /* ./parser//parser.nit:10118 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10118);
+  }
+  /* ./parser//parser.nit:10119 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10124 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10125 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction326____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10125);
+  }
+  REGB0 = ATTR_parser___ReduceAction326____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction326___init(val_t p0, val_t p1, int* init_table){
+  int itpos307 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction326].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos307]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10128;
+  fra.me.meth = LOCATE_parser___ReduceAction326___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10128 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction326____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos307] = 1;
+  return;
+}
+void parser___ReduceAction327___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 = 10132;
+  fra.me.meth = LOCATE_parser___ReduceAction327___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10134 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10135 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10136 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10138 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwisset, ID_TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10138);
+  }
+  /* ./parser//parser.nit:10139 */
+  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:10142 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10142);
+  }
+  /* ./parser//parser.nit:10143 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* ./parser//parser.nit:10148 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10149 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction327____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10149);
+  }
+  REGB0 = ATTR_parser___ReduceAction327____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction327___init(val_t p0, val_t p1, int* init_table){
+  int itpos308 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction327].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos308]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10152;
+  fra.me.meth = LOCATE_parser___ReduceAction327___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10152 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction327____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos308] = 1;
+  return;
+}
+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 = 10156;
+  fra.me.meth = LOCATE_parser___ReduceAction328___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10158 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10159 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10160 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10161 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10162 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10164 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10164);
+  }
+  /* ./parser//parser.nit:10166 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10166);
+  }
+  /* ./parser//parser.nit:10167 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10171 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10172 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction328____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10172);
+  }
+  REGB0 = ATTR_parser___ReduceAction328____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction328___init(val_t p0, val_t p1, int* init_table){
+  int itpos309 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction328].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos309]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10175;
+  fra.me.meth = LOCATE_parser___ReduceAction328___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10175 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction328____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos309] = 1;
+  return;
+}
+void parser___ReduceAction329___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 = 10179;
+  fra.me.meth = LOCATE_parser___ReduceAction329___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10181 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10182 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10183 */
+  fra.me.REG[4] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:10186 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10186);
+  }
+  /* ./parser//parser.nit:10187 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10191 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10192 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction329____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10192);
+  }
+  REGB0 = ATTR_parser___ReduceAction329____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction329___init(val_t p0, val_t p1, int* init_table){
+  int itpos310 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction329].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos310]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10195;
+  fra.me.meth = LOCATE_parser___ReduceAction329___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10195 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction329____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos310] = 1;
+  return;
+}
+void parser___ReduceAction336___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 = 10199;
+  fra.me.meth = LOCATE_parser___ReduceAction336___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:10201 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10202 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10203 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10204 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10205 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10207 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10207);
+  }
+  /* ./parser//parser.nit:10209 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10209);
+  }
+  /* ./parser//parser.nit:10210 */
+  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:10211 */
+  fra.me.REG[6] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* ./parser//parser.nit:10216 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:10217 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction336____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10217);
+  }
+  REGB0 = ATTR_parser___ReduceAction336____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction336___init(val_t p0, val_t p1, int* init_table){
+  int itpos311 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction336].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos311]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10220;
+  fra.me.meth = LOCATE_parser___ReduceAction336___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10220 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction336____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos311] = 1;
+  return;
+}
+void parser___ReduceAction337___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 = 10224;
+  fra.me.meth = LOCATE_parser___ReduceAction337___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:10226 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10227 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10228 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10229 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10230 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10231 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10232 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10233 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10234 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10236 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwnew, ID_TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10236);
+  }
+  /* ./parser//parser.nit:10238 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10238);
+  }
+  /* ./parser//parser.nit:10240 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10240);
+  }
+  /* ./parser//parser.nit:10242 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10242);
+  }
+  /* ./parser//parser.nit:10243 */
+  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:10244 */
+  fra.me.REG[7] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[7]);
+  /* ./parser//parser.nit:10250 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:10251 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction337____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10251);
+  }
+  REGB0 = ATTR_parser___ReduceAction337____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction337___init(val_t p0, val_t p1, int* init_table){
+  int itpos312 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction337].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos312]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10254;
+  fra.me.meth = LOCATE_parser___ReduceAction337___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10254 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction337____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos312] = 1;
+  return;
+}
+void parser___ReduceAction338___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 = 10258;
+  fra.me.meth = LOCATE_parser___ReduceAction338___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10260 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10261 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10262 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10263 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10264 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10265 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10266 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10267 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10268 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10269 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10271 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10271);
+  }
+  /* ./parser//parser.nit:10273 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10273);
+  }
+  /* ./parser//parser.nit:10274 */
+  fra.me.REG[3] = NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10278 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10279 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction338____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10279);
+  }
+  REGB0 = ATTR_parser___ReduceAction338____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction338___init(val_t p0, val_t p1, int* init_table){
+  int itpos313 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction338].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos313]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10282;
+  fra.me.meth = LOCATE_parser___ReduceAction338___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10282 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction338____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos313] = 1;
+  return;
+}
+void parser___ReduceAction339___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 = 10286;
+  fra.me.meth = LOCATE_parser___ReduceAction339___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10288 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10289 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10290 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10291 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10292 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10293 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10294 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10295 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10296 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10297 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10299 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10299);
+  }
+  /* ./parser//parser.nit:10301 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10301);
+  }
+  /* ./parser//parser.nit:10302 */
+  fra.me.REG[3] = NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10306 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10307 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction339____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10307);
+  }
+  REGB0 = ATTR_parser___ReduceAction339____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction339___init(val_t p0, val_t p1, int* init_table){
+  int itpos314 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction339].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos314]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10310;
+  fra.me.meth = LOCATE_parser___ReduceAction339___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10310 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction339____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos314] = 1;
+  return;
+}
+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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10314;
+  fra.me.meth = LOCATE_parser___ReduceAction340___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10316 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10317 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10318 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10320 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10320);
+  }
+  /* ./parser//parser.nit:10321 */
+  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:10322 */
+  fra.me.REG[4] = NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[4]);
+  /* ./parser//parser.nit:10325 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10326 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction340____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10326);
+  }
+  REGB0 = ATTR_parser___ReduceAction340____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction340___init(val_t p0, val_t p1, int* init_table){
+  int itpos315 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction340].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos315]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10329;
+  fra.me.meth = LOCATE_parser___ReduceAction340___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10329 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction340____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos315] = 1;
+  return;
+}
+void parser___ReduceAction341___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 = 10333;
+  fra.me.meth = LOCATE_parser___ReduceAction341___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10335 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10336 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10338 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwself, ID_TKwself)) /*cast nullable TKwself*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10338);
+  }
+  /* ./parser//parser.nit:10339 */
+  fra.me.REG[3] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10342 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10343 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction341____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10343);
+  }
+  REGB0 = ATTR_parser___ReduceAction341____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction341___init(val_t p0, val_t p1, int* init_table){
+  int itpos316 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction341].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos316]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10346;
+  fra.me.meth = LOCATE_parser___ReduceAction341___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10346 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction341____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos316] = 1;
+  return;
+}
+void parser___ReduceAction342___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 = 10350;
+  fra.me.meth = LOCATE_parser___ReduceAction342___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10352 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10353 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10355 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwtrue, ID_TKwtrue)) /*cast nullable TKwtrue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10355);
+  }
+  /* ./parser//parser.nit:10356 */
+  fra.me.REG[3] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10359 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10360 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction342____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10360);
+  }
+  REGB0 = ATTR_parser___ReduceAction342____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction342___init(val_t p0, val_t p1, int* init_table){
+  int itpos317 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction342].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos317]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10363;
+  fra.me.meth = LOCATE_parser___ReduceAction342___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10363 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction342____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos317] = 1;
+  return;
+}
+void parser___ReduceAction343___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 = 10367;
+  fra.me.meth = LOCATE_parser___ReduceAction343___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10369 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10370 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10372 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwfalse, ID_TKwfalse)) /*cast nullable TKwfalse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10372);
+  }
+  /* ./parser//parser.nit:10373 */
+  fra.me.REG[3] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10376 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10377 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction343____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10377);
+  }
+  REGB0 = ATTR_parser___ReduceAction343____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction343___init(val_t p0, val_t p1, int* init_table){
+  int itpos318 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction343].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos318]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10380;
+  fra.me.meth = LOCATE_parser___ReduceAction343___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10380 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction343____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos318] = 1;
+  return;
+}
+void parser___ReduceAction344___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 = 10384;
+  fra.me.meth = LOCATE_parser___ReduceAction344___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10389 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwnull, ID_TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10389);
+  }
+  /* ./parser//parser.nit:10390 */
+  fra.me.REG[3] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10393 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10394 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction344____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10394);
+  }
+  REGB0 = ATTR_parser___ReduceAction344____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction344___init(val_t p0, val_t p1, int* init_table){
+  int itpos319 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction344].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos319]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10397;
+  fra.me.meth = LOCATE_parser___ReduceAction344___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10397 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction344____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos319] = 1;
+  return;
+}
+void parser___ReduceAction345___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 = 10401;
+  fra.me.meth = LOCATE_parser___ReduceAction345___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10403 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10404 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10406 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TNumber, ID_TNumber)) /*cast nullable TNumber*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10406);
+  }
+  /* ./parser//parser.nit:10407 */
+  fra.me.REG[3] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10410 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10411 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction345____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10411);
+  }
+  REGB0 = ATTR_parser___ReduceAction345____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction345___init(val_t p0, val_t p1, int* init_table){
+  int itpos320 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction345].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos320]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10414;
+  fra.me.meth = LOCATE_parser___ReduceAction345___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10414 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction345____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos320] = 1;
+  return;
+}
+void parser___ReduceAction346___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 = 10418;
+  fra.me.meth = LOCATE_parser___ReduceAction346___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10420 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10421 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10423 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TFloat, ID_TFloat)) /*cast nullable TFloat*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10423);
+  }
+  /* ./parser//parser.nit:10424 */
+  fra.me.REG[3] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr(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___ReduceAction346____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10428);
+  }
+  REGB0 = ATTR_parser___ReduceAction346____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction346___init(val_t p0, val_t p1, int* init_table){
+  int itpos321 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction346].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos321]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10431;
+  fra.me.meth = LOCATE_parser___ReduceAction346___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10431 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction346____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos321] = 1;
+  return;
+}
+void parser___ReduceAction347___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 = 10435;
+  fra.me.meth = LOCATE_parser___ReduceAction347___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10437 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10438 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10440 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TChar, ID_TChar)) /*cast nullable TChar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10440);
+  }
+  /* ./parser//parser.nit:10441 */
+  fra.me.REG[3] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10444 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10445 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction347____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10445);
+  }
+  REGB0 = ATTR_parser___ReduceAction347____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction347___init(val_t p0, val_t p1, int* init_table){
+  int itpos322 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction347].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos322]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10448;
+  fra.me.meth = LOCATE_parser___ReduceAction347___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10448 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction347____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos322] = 1;
+  return;
+}
+void parser___ReduceAction348___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 = 10452;
+  fra.me.meth = LOCATE_parser___ReduceAction348___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10454 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10455 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10457 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TString, ID_TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10457);
+  }
+  /* ./parser//parser.nit:10458 */
+  fra.me.REG[3] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10461 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10462 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction348____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10462);
+  }
+  REGB0 = ATTR_parser___ReduceAction348____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction348___init(val_t p0, val_t p1, int* init_table){
+  int itpos323 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction348].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos323]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10465;
+  fra.me.meth = LOCATE_parser___ReduceAction348___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10465 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction348____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos323] = 1;
+  return;
+}
+void parser___ReduceAction351___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 = 10469;
+  fra.me.meth = LOCATE_parser___ReduceAction351___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10471 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10472 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10473 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10474 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10475 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10476 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10477 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10478 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10479 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10480 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10481 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10483 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10483);
+  }
+  /* ./parser//parser.nit:10485 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwas, ID_TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10485);
+  }
+  /* ./parser//parser.nit:10487 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10487);
+  }
+  /* ./parser//parser.nit:10488 */
+  fra.me.REG[3] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10493 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10494 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction351____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10494);
+  }
+  REGB0 = ATTR_parser___ReduceAction351____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction351___init(val_t p0, val_t p1, int* init_table){
+  int itpos324 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction351].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos324]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10497;
+  fra.me.meth = LOCATE_parser___ReduceAction351___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10497 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction351____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos324] = 1;
+  return;
+}
+void parser___ReduceAction352___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 = 10501;
+  fra.me.meth = LOCATE_parser___ReduceAction352___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:10503 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10504 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10505 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10506 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10507 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10508 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10509 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10510 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10511 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10512 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10513 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10514 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10515 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10517 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10517);
+  }
+  /* ./parser//parser.nit:10519 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwas, ID_TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10519);
+  }
+  /* ./parser//parser.nit:10521 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwnot, ID_TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10521);
+  }
+  /* ./parser//parser.nit:10523 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwnull, ID_TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10523);
+  }
+  /* ./parser//parser.nit:10524 */
+  fra.me.REG[3] = NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10530 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10531 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction352____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10531);
+  }
+  REGB0 = ATTR_parser___ReduceAction352____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction352___init(val_t p0, val_t p1, int* init_table){
+  int itpos325 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction352].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos325]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10534;
+  fra.me.meth = LOCATE_parser___ReduceAction352___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10534 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction352____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos325] = 1;
+  return;
+}
+void parser___ReduceAction353___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 = 10538;
+  fra.me.meth = LOCATE_parser___ReduceAction353___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10540 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10541 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10542 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10543 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10545 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10545);
+  }
+  /* ./parser//parser.nit:10547 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10547);
+  }
+  /* ./parser//parser.nit:10548 */
+  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:10549 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10550 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10552 */
+  fra.me.REG[5] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[5]);
+  /* ./parser//parser.nit:10555 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:10556 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction353____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10556);
+  }
+  REGB0 = ATTR_parser___ReduceAction353____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction353___init(val_t p0, val_t p1, int* init_table){
+  int itpos326 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction353].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos326]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10559;
+  fra.me.meth = LOCATE_parser___ReduceAction353___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10559 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction353____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos326] = 1;
+  return;
+}
+void parser___ReduceAction354___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 = 10563;
+  fra.me.meth = LOCATE_parser___ReduceAction354___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:10565 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10566 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10567 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10568 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10569 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10571 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10571);
+  }
+  /* ./parser//parser.nit:10573 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10573);
+  }
+  /* ./parser//parser.nit:10575 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10575);
+  }
+  /* ./parser//parser.nit:10576 */
+  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:10577 */
+  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:10578 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10579 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10581 */
+  fra.me.REG[6] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6]);
+  /* ./parser//parser.nit:10584 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:10585 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction354____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10585);
+  }
+  REGB0 = ATTR_parser___ReduceAction354____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction354___init(val_t p0, val_t p1, int* init_table){
+  int itpos327 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction354].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos327]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10588;
+  fra.me.meth = LOCATE_parser___ReduceAction354___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10588 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction354____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos327] = 1;
+  return;
+}
+void parser___ReduceAction355___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 = 10592;
+  fra.me.meth = LOCATE_parser___ReduceAction355___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10594 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10595 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10596 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10597 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10598 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10599 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10602 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10603 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:10605 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10606 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10608 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:10609 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction355____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10609);
+  }
+  REGB0 = ATTR_parser___ReduceAction355____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction355___init(val_t p0, val_t p1, int* init_table){
+  int itpos328 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction355].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos328]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10612;
+  fra.me.meth = LOCATE_parser___ReduceAction355___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10612 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction355____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos328] = 1;
+  return;
+}
+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 = 10616;
+  fra.me.meth = LOCATE_parser___ReduceAction356___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10618 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10619 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10621 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TStartString, ID_TStartString)) /*cast nullable TStartString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10621);
+  }
+  /* ./parser//parser.nit:10622 */
+  fra.me.REG[3] = NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10625 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10626 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction356____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10626);
+  }
+  REGB0 = ATTR_parser___ReduceAction356____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction356___init(val_t p0, val_t p1, int* init_table){
+  int itpos329 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction356].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos329]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10629;
+  fra.me.meth = LOCATE_parser___ReduceAction356___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10629 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction356____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos329] = 1;
+  return;
+}
+void parser___ReduceAction358___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 = 10633;
+  fra.me.meth = LOCATE_parser___ReduceAction358___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10635 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10636 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10638 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TMidString, ID_TMidString)) /*cast nullable TMidString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10638);
+  }
+  /* ./parser//parser.nit:10639 */
+  fra.me.REG[3] = NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10642 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10643 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction358____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10643);
+  }
+  REGB0 = ATTR_parser___ReduceAction358____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction358___init(val_t p0, val_t p1, int* init_table){
+  int itpos330 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction358].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos330]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10646;
+  fra.me.meth = LOCATE_parser___ReduceAction358___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10646 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction358____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos330] = 1;
+  return;
+}
+void parser___ReduceAction359___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 = 10650;
+  fra.me.meth = LOCATE_parser___ReduceAction359___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10652 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10653 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10655 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TEndString, ID_TEndString)) /*cast nullable TEndString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10655);
+  }
+  /* ./parser//parser.nit:10656 */
+  fra.me.REG[3] = NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[3]);
+  /* ./parser//parser.nit:10659 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10660 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction359____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10660);
+  }
+  REGB0 = ATTR_parser___ReduceAction359____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction359___init(val_t p0, val_t p1, int* init_table){
+  int itpos331 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction359].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos331]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10663;
+  fra.me.meth = LOCATE_parser___ReduceAction359___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10663 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction359____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos331] = 1;
+  return;
+}
+void parser___ReduceAction360___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 = 10667;
+  fra.me.meth = LOCATE_parser___ReduceAction360___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10669 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10670 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10671 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10672 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10673 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10674 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10675 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10677 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10678 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10680 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10681 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction360____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10681);
+  }
+  REGB0 = ATTR_parser___ReduceAction360____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction360___init(val_t p0, val_t p1, int* init_table){
+  int itpos332 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction360].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos332]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10684;
+  fra.me.meth = LOCATE_parser___ReduceAction360___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10684 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction360____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos332] = 1;
+  return;
+}
+void parser___ReduceAction361___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 = 10688;
+  fra.me.meth = LOCATE_parser___ReduceAction361___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10690 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10691 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10692 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10693 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10694 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10695 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10696 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10697 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10700 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10700);
+  }
+  /* ./parser//parser.nit:10701 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10702 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* ./parser//parser.nit:10704 */
+  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:10705 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:10706 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction361____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10706);
+  }
+  REGB0 = ATTR_parser___ReduceAction361____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction361___init(val_t p0, val_t p1, int* init_table){
+  int itpos333 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction361].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos333]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10709;
+  fra.me.meth = LOCATE_parser___ReduceAction361___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10709 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction361____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos333] = 1;
+  return;
+}
+void parser___ReduceAction363___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 = 10713;
+  fra.me.meth = LOCATE_parser___ReduceAction363___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10715 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10716 */
+  fra.me.REG[3] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10717 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10718 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction363____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10718);
+  }
+  REGB0 = ATTR_parser___ReduceAction363____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction363___init(val_t p0, val_t p1, int* init_table){
+  int itpos334 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction363].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos334]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10721;
+  fra.me.meth = LOCATE_parser___ReduceAction363___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10721 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction363____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos334] = 1;
+  return;
+}
+void parser___ReduceAction366___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 = 10725;
+  fra.me.meth = LOCATE_parser___ReduceAction366___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10727 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10728 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10729 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10731 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10732 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10734 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10735 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction366____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10735);
+  }
+  REGB0 = ATTR_parser___ReduceAction366____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction366___init(val_t p0, val_t p1, int* init_table){
+  int itpos335 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction366].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos335]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10738;
+  fra.me.meth = LOCATE_parser___ReduceAction366___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10738 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction366____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos335] = 1;
+  return;
+}
+void parser___ReduceAction371___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 = 10742;
+  fra.me.meth = LOCATE_parser___ReduceAction371___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10744 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10745 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10746 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10747 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10748 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10750 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10751 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction371____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10751);
+  }
+  REGB0 = ATTR_parser___ReduceAction371____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction371___init(val_t p0, val_t p1, int* init_table){
+  int itpos336 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction371].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos336]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10754;
+  fra.me.meth = LOCATE_parser___ReduceAction371___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10754 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction371____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos336] = 1;
+  return;
+}
+void parser___ReduceAction372___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 = 10758;
+  fra.me.meth = LOCATE_parser___ReduceAction372___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10760 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10761 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10762 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10763 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10764 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10766 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10766);
+  }
+  /* ./parser//parser.nit:10767 */
+  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:10768 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10769 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction372____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10769);
+  }
+  REGB0 = ATTR_parser___ReduceAction372____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction372___init(val_t p0, val_t p1, int* init_table){
+  int itpos337 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction372].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos337]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10772;
+  fra.me.meth = LOCATE_parser___ReduceAction372___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10772 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction372____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos337] = 1;
+  return;
+}
+void parser___ReduceAction373___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 = 10776;
+  fra.me.meth = LOCATE_parser___ReduceAction373___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10778 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10779 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10780 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10782 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10782);
+  }
+  /* ./parser//parser.nit:10783 */
+  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:10784 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10785 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction373____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10785);
+  }
+  REGB0 = ATTR_parser___ReduceAction373____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction373___init(val_t p0, val_t p1, int* init_table){
+  int itpos338 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction373].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos338]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10788;
+  fra.me.meth = LOCATE_parser___ReduceAction373___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10788 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction373____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos338] = 1;
+  return;
+}
+void parser___ReduceAction374___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 = 10792;
+  fra.me.meth = LOCATE_parser___ReduceAction374___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10794 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10795 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10796 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10798 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10799 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10801 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10802 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction374____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10802);
+  }
+  REGB0 = ATTR_parser___ReduceAction374____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction374___init(val_t p0, val_t p1, int* init_table){
+  int itpos339 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction374].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos339]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10805;
+  fra.me.meth = LOCATE_parser___ReduceAction374___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10805 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction374____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos339] = 1;
+  return;
+}
+void parser___ReduceAction375___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 = 10809;
+  fra.me.meth = LOCATE_parser___ReduceAction375___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:10811 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10812 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10813 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10814 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10815 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10816 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10817 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10819 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10819);
+  }
+  /* ./parser//parser.nit:10821 */
+  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:10822 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:10823 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:10825 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:10826 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction375____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10826);
+  }
+  REGB0 = ATTR_parser___ReduceAction375____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction375___init(val_t p0, val_t p1, int* init_table){
+  int itpos340 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction375].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos340]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10829;
+  fra.me.meth = LOCATE_parser___ReduceAction375___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10829 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction375____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos340] = 1;
+  return;
+}
+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 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___ReduceAction376___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10839 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10839);
+  }
+  /* ./parser//parser.nit:10840 */
+  fra.me.REG[3] = NEW_AQualified_parser_prod___AQualified___init_aqualified(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:10844 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10845 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction376____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10845);
+  }
+  REGB0 = ATTR_parser___ReduceAction376____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction376___init(val_t p0, val_t p1, int* init_table){
+  int itpos341 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction376].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos341]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10848;
+  fra.me.meth = LOCATE_parser___ReduceAction376___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10848 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction376____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos341] = 1;
+  return;
+}
+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 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___ReduceAction377___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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: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:10856 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10857 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10859 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10859);
+  }
+  /* ./parser//parser.nit:10860 */
+  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:10862 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10862);
+  }
+  /* ./parser//parser.nit:10863 */
+  fra.me.REG[3] = NEW_AQualified_parser_prod___AQualified___init_aqualified(fra.me.REG[5], fra.me.REG[3]);
+  /* ./parser//parser.nit:10867 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10868 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction377____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10868);
+  }
+  REGB0 = ATTR_parser___ReduceAction377____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction377___init(val_t p0, val_t p1, int* init_table){
+  int itpos342 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction377].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos342]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10871;
+  fra.me.meth = LOCATE_parser___ReduceAction377___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10871 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction377____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos342] = 1;
+  return;
+}
+void parser___ReduceAction378___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 = 10875;
+  fra.me.meth = LOCATE_parser___ReduceAction378___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10877 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10878 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10879 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10881 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10881);
+  }
+  /* ./parser//parser.nit:10882 */
+  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:10883 */
+  fra.me.REG[4] = NEW_AQualified_parser_prod___AQualified___init_aqualified(fra.me.REG[4], NIT_NULL);
+  /* ./parser//parser.nit:10887 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10888 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction378____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10888);
+  }
+  REGB0 = ATTR_parser___ReduceAction378____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction378___init(val_t p0, val_t p1, int* init_table){
+  int itpos343 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction378].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos343]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10891;
+  fra.me.meth = LOCATE_parser___ReduceAction378___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10891 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction378____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos343] = 1;
+  return;
+}
+void parser___ReduceAction379___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 = 10895;
+  fra.me.meth = LOCATE_parser___ReduceAction379___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10897 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10898 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10899 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10900 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10902 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10903 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction379____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10903);
+  }
+  REGB0 = ATTR_parser___ReduceAction379____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction379___init(val_t p0, val_t p1, int* init_table){
+  int itpos344 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction379].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos344]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10906;
+  fra.me.meth = LOCATE_parser___ReduceAction379___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10906 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction379____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos344] = 1;
+  return;
+}
+void parser___ReduceAction380___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 = 10910;
+  fra.me.meth = LOCATE_parser___ReduceAction380___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10912 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10913 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10914 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10915 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10917 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10918 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction380____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10918);
+  }
+  REGB0 = ATTR_parser___ReduceAction380____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction380___init(val_t p0, val_t p1, int* init_table){
+  int itpos345 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction380].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos345]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10921;
+  fra.me.meth = LOCATE_parser___ReduceAction380___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10921 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction380____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos345] = 1;
+  return;
+}
+void parser___ReduceAction381___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 = 10925;
+  fra.me.meth = LOCATE_parser___ReduceAction381___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10927 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10928 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10929 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction381____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10929);
+  }
+  REGB0 = ATTR_parser___ReduceAction381____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction381___init(val_t p0, val_t p1, int* init_table){
+  int itpos346 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction381].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos346]) return;
+  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___ReduceAction381___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10932 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction381____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos346] = 1;
+  return;
+}
+void parser___ReduceAction383___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 = 10936;
+  fra.me.meth = LOCATE_parser___ReduceAction383___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10938 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10939 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10940 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10942 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10942);
+  }
+  /* ./parser//parser.nit:10943 */
+  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:10944 */
+  fra.me.REG[4] = NEW_ADoc_parser_prod___ADoc___init_adoc(fra.me.REG[4]);
+  /* ./parser//parser.nit:10947 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10948 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction383____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10948);
+  }
+  REGB0 = ATTR_parser___ReduceAction383____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction383___init(val_t p0, val_t p1, int* init_table){
+  int itpos347 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction383].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos347]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10951;
+  fra.me.meth = LOCATE_parser___ReduceAction383___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10951 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction383____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos347] = 1;
+  return;
+}
+void parser___ReduceAction384___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 = 10955;
+  fra.me.meth = LOCATE_parser___ReduceAction384___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:10957 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10958 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10959 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10960 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:10962 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10962);
+  }
+  /* ./parser//parser.nit:10963 */
+  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:10964 */
+  fra.me.REG[4] = NEW_ADoc_parser_prod___ADoc___init_adoc(fra.me.REG[4]);
+  /* ./parser//parser.nit:10967 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:10968 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction384____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10968);
+  }
+  REGB0 = ATTR_parser___ReduceAction384____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction384___init(val_t p0, val_t p1, int* init_table){
+  int itpos348 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction384].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos348]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10971;
+  fra.me.meth = LOCATE_parser___ReduceAction384___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10971 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction384____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos348] = 1;
+  return;
+}
+void parser___ReduceAction386___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 = 10975;
+  fra.me.meth = LOCATE_parser___ReduceAction386___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  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:10977 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10978 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10979 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction386____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10979);
+  }
+  REGB0 = ATTR_parser___ReduceAction386____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction386___init(val_t p0, val_t p1, int* init_table){
+  int itpos349 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction386].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos349]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10982;
+  fra.me.meth = LOCATE_parser___ReduceAction386___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10982 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction386____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos349] = 1;
+  return;
+}
+void parser___ReduceAction387___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 = 10986;
+  fra.me.meth = LOCATE_parser___ReduceAction387___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:10988 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10989 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10991 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:10992 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction387____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10992);
+  }
+  REGB0 = ATTR_parser___ReduceAction387____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction387___init(val_t p0, val_t p1, int* init_table){
+  int itpos350 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction387].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos350]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10995;
+  fra.me.meth = LOCATE_parser___ReduceAction387___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:10995 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction387____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos350] = 1;
+  return;
+}
+void parser___ReduceAction388___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 = 10999;
+  fra.me.meth = LOCATE_parser___ReduceAction388___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:11001 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11002 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11003 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11004 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction388____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11004);
+  }
+  REGB0 = ATTR_parser___ReduceAction388____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction388___init(val_t p0, val_t p1, int* init_table){
+  int itpos351 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction388].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos351]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11007;
+  fra.me.meth = LOCATE_parser___ReduceAction388___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11007 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction388____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos351] = 1;
+  return;
+}
+void parser___ReduceAction389___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 = 11011;
+  fra.me.meth = LOCATE_parser___ReduceAction389___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:11013 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11014 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11015 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11016 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11017 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction389____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11017);
+  }
+  REGB0 = ATTR_parser___ReduceAction389____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction389___init(val_t p0, val_t p1, int* init_table){
+  int itpos352 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction389].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos352]) return;
+  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___ReduceAction389___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11020 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction389____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos352] = 1;
+  return;
+}
+void parser___ReduceAction637___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 = 11024;
+  fra.me.meth = LOCATE_parser___ReduceAction637___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11026 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11027 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11028 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11029 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11031 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwisset, ID_TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11031);
+  }
+  /* ./parser//parser.nit:11033 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11033);
+  }
+  /* ./parser//parser.nit:11035 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11035);
+  }
+  /* ./parser//parser.nit:11036 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:11041 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:11042 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction637____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11042);
+  }
+  REGB0 = ATTR_parser___ReduceAction637____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction637___init(val_t p0, val_t p1, int* init_table){
+  int itpos353 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction637].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos353]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11045;
+  fra.me.meth = LOCATE_parser___ReduceAction637___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11045 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction637____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos353] = 1;
+  return;
+}
+void parser___ReduceAction638___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 = 11049;
+  fra.me.meth = LOCATE_parser___ReduceAction638___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11051 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11052 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11053 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11055 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11055);
+  }
+  /* ./parser//parser.nit:11057 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11057);
+  }
+  /* ./parser//parser.nit:11058 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* ./parser//parser.nit:11062 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:11063 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction638____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11063);
+  }
+  REGB0 = ATTR_parser___ReduceAction638____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction638___init(val_t p0, val_t p1, int* init_table){
+  int itpos354 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction638].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos354]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11066;
+  fra.me.meth = LOCATE_parser___ReduceAction638___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11066 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction638____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos354] = 1;
+  return;
+}
+void parser___ReduceAction639___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 = 11070;
+  fra.me.meth = LOCATE_parser___ReduceAction639___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[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:11072 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11073 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11074 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11075 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11076 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11077 */
+  fra.me.REG[7] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11079 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11079);
+  }
+  /* ./parser//parser.nit:11081 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11081);
+  }
+  /* ./parser//parser.nit:11083 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11083);
+  }
+  /* ./parser//parser.nit:11084 */
+  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:11085 */
+  fra.me.REG[7] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[7]);
+  /* ./parser//parser.nit:11091 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* ./parser//parser.nit:11092 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction639____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11092);
+  }
+  REGB0 = ATTR_parser___ReduceAction639____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction639___init(val_t p0, val_t p1, int* init_table){
+  int itpos355 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction639].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos355]) return;
+  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___ReduceAction639___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11095 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction639____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos355] = 1;
+  return;
+}
+void parser___ReduceAction642___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 = 11099;
+  fra.me.meth = LOCATE_parser___ReduceAction642___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[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:11101 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11102 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11103 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11104 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11105 */
+  fra.me.REG[6] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11107 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11107);
+  }
+  /* ./parser//parser.nit:11109 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11109);
+  }
+  /* ./parser//parser.nit:11111 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11111);
+  }
+  /* ./parser//parser.nit:11112 */
+  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:11113 */
+  fra.me.REG[6] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* ./parser//parser.nit:11118 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* ./parser//parser.nit:11119 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction642____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11119);
+  }
+  REGB0 = ATTR_parser___ReduceAction642____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction642___init(val_t p0, val_t p1, int* init_table){
+  int itpos356 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction642].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos356]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11122;
+  fra.me.meth = LOCATE_parser___ReduceAction642___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11122 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction642____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos356] = 1;
+  return;
+}
+void parser___ReduceAction655___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 = 11126;
+  fra.me.meth = LOCATE_parser___ReduceAction655___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:11128 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11129 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11130 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11131 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11133 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:11134 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction655____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11134);
+  }
+  REGB0 = ATTR_parser___ReduceAction655____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction655___init(val_t p0, val_t p1, int* init_table){
+  int itpos357 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction655].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos357]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11137;
+  fra.me.meth = LOCATE_parser___ReduceAction655___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11137 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction655____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos357] = 1;
+  return;
+}
+void parser___ReduceAction656___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 = 11141;
+  fra.me.meth = LOCATE_parser___ReduceAction656___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[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:11143 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11144 */
+  fra.me.REG[3] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* ./parser//parser.nit:11146 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* ./parser//parser.nit:11147 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction656____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11147);
+  }
+  REGB0 = ATTR_parser___ReduceAction656____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction656___init(val_t p0, val_t p1, int* init_table){
+  int itpos358 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction656].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos358]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11150;
+  fra.me.meth = LOCATE_parser___ReduceAction656___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11150 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction656____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos358] = 1;
+  return;
+}
+void parser___ReduceAction663___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 = 11154;
+  fra.me.meth = LOCATE_parser___ReduceAction663___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11156 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11157 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11158 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11160 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11161 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11163 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11164 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction663____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11164);
+  }
+  REGB0 = ATTR_parser___ReduceAction663____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction663___init(val_t p0, val_t p1, int* init_table){
+  int itpos359 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction663].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos359]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11167;
+  fra.me.meth = LOCATE_parser___ReduceAction663___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11167 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction663____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos359] = 1;
+  return;
+}
+void parser___ReduceAction664___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 = 11171;
+  fra.me.meth = LOCATE_parser___ReduceAction664___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11173 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11174 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11175 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11176 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11178 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11178);
+  }
+  /* ./parser//parser.nit:11180 */
+  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:11181 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11182 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11184 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11185 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction664____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11185);
+  }
+  REGB0 = ATTR_parser___ReduceAction664____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction664___init(val_t p0, val_t p1, int* init_table){
+  int itpos360 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction664].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos360]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11188;
+  fra.me.meth = LOCATE_parser___ReduceAction664___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11188 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction664____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos360] = 1;
+  return;
+}
+void parser___ReduceAction665___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 = 11192;
+  fra.me.meth = LOCATE_parser___ReduceAction665___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11194 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11195 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11196 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11198 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11199 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11201 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11202 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction665____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11202);
+  }
+  REGB0 = ATTR_parser___ReduceAction665____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction665___init(val_t p0, val_t p1, int* init_table){
+  int itpos361 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction665].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos361]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11205;
+  fra.me.meth = LOCATE_parser___ReduceAction665___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11205 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction665____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos361] = 1;
+  return;
+}
+void parser___ReduceAction666___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 = 11209;
+  fra.me.meth = LOCATE_parser___ReduceAction666___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11211 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11212 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11213 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11214 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11216 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11216);
+  }
+  /* ./parser//parser.nit:11218 */
+  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:11219 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11220 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11222 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11223 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction666____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11223);
+  }
+  REGB0 = ATTR_parser___ReduceAction666____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction666___init(val_t p0, val_t p1, int* init_table){
+  int itpos362 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction666].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos362]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11226;
+  fra.me.meth = LOCATE_parser___ReduceAction666___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11226 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction666____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos362] = 1;
+  return;
+}
+void parser___ReduceAction667___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 = 11230;
+  fra.me.meth = LOCATE_parser___ReduceAction667___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11232 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11233 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11234 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11236 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11237 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11239 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11240 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction667____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11240);
+  }
+  REGB0 = ATTR_parser___ReduceAction667____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction667___init(val_t p0, val_t p1, int* init_table){
+  int itpos363 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction667].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos363]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11243;
+  fra.me.meth = LOCATE_parser___ReduceAction667___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11243 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction667____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos363] = 1;
+  return;
+}
+void parser___ReduceAction668___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 = 11247;
+  fra.me.meth = LOCATE_parser___ReduceAction668___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11249 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11250 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11251 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11252 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11254 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11254);
+  }
+  /* ./parser//parser.nit:11256 */
+  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:11257 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11258 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11260 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11261 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction668____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11261);
+  }
+  REGB0 = ATTR_parser___ReduceAction668____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction668___init(val_t p0, val_t p1, int* init_table){
+  int itpos364 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction668].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos364]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11264;
+  fra.me.meth = LOCATE_parser___ReduceAction668___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11264 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction668____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos364] = 1;
+  return;
+}
+void parser___ReduceAction669___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 = 11268;
+  fra.me.meth = LOCATE_parser___ReduceAction669___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11270 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11271 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11272 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11274 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11275 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11277 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11278 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction669____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11278);
+  }
+  REGB0 = ATTR_parser___ReduceAction669____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction669___init(val_t p0, val_t p1, int* init_table){
+  int itpos365 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction669].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos365]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11281;
+  fra.me.meth = LOCATE_parser___ReduceAction669___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11281 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction669____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos365] = 1;
+  return;
+}
+void parser___ReduceAction670___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 = 11285;
+  fra.me.meth = LOCATE_parser___ReduceAction670___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11287 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11288 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11289 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11290 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11292 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11292);
+  }
+  /* ./parser//parser.nit:11294 */
+  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:11295 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11296 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11298 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11299 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction670____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11299);
+  }
+  REGB0 = ATTR_parser___ReduceAction670____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction670___init(val_t p0, val_t p1, int* init_table){
+  int itpos366 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction670].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos366]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11302;
+  fra.me.meth = LOCATE_parser___ReduceAction670___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11302 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction670____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos366] = 1;
+  return;
+}
+void parser___ReduceAction673___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 = 11306;
+  fra.me.meth = LOCATE_parser___ReduceAction673___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11308 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./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] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11312 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11313 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11315 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11316 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction673____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11316);
+  }
+  REGB0 = ATTR_parser___ReduceAction673____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction673___init(val_t p0, val_t p1, int* init_table){
+  int itpos367 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction673].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos367]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11319;
+  fra.me.meth = LOCATE_parser___ReduceAction673___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11319 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction673____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos367] = 1;
+  return;
+}
+void parser___ReduceAction674___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 = 11323;
+  fra.me.meth = LOCATE_parser___ReduceAction674___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11325 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11326 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11327 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11328 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11330 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11330);
+  }
+  /* ./parser//parser.nit:11332 */
+  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:11333 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11334 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11336 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11337 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction674____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11337);
+  }
+  REGB0 = ATTR_parser___ReduceAction674____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction674___init(val_t p0, val_t p1, int* init_table){
+  int itpos368 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction674].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos368]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11340;
+  fra.me.meth = LOCATE_parser___ReduceAction674___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11340 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction674____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos368] = 1;
+  return;
+}
+void parser___ReduceAction675___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 = 11344;
+  fra.me.meth = LOCATE_parser___ReduceAction675___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11346 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11347 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11348 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11350 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11351 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11353 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11354 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction675____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11354);
+  }
+  REGB0 = ATTR_parser___ReduceAction675____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction675___init(val_t p0, val_t p1, int* init_table){
+  int itpos369 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction675].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos369]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11357;
+  fra.me.meth = LOCATE_parser___ReduceAction675___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11357 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction675____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos369] = 1;
+  return;
+}
+void parser___ReduceAction676___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 = 11361;
+  fra.me.meth = LOCATE_parser___ReduceAction676___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11363 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11364 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11365 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11366 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11368 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11368);
+  }
+  /* ./parser//parser.nit:11370 */
+  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:11371 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11372 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11374 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11375 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction676____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11375);
+  }
+  REGB0 = ATTR_parser___ReduceAction676____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction676___init(val_t p0, val_t p1, int* init_table){
+  int itpos370 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction676].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos370]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11378;
+  fra.me.meth = LOCATE_parser___ReduceAction676___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11378 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction676____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos370] = 1;
+  return;
+}
+void parser___ReduceAction677___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 = 11382;
+  fra.me.meth = LOCATE_parser___ReduceAction677___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11384 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11385 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11386 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11388 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11389 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11391 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11392 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction677____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11392);
+  }
+  REGB0 = ATTR_parser___ReduceAction677____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction677___init(val_t p0, val_t p1, int* init_table){
+  int itpos371 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction677].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos371]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11395;
+  fra.me.meth = LOCATE_parser___ReduceAction677___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11395 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction677____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos371] = 1;
+  return;
+}
+void parser___ReduceAction678___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 = 11399;
+  fra.me.meth = LOCATE_parser___ReduceAction678___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11401 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11402 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11403 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11404 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11406 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11406);
+  }
+  /* ./parser//parser.nit:11408 */
+  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:11409 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11410 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11412 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11413 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction678____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11413);
+  }
+  REGB0 = ATTR_parser___ReduceAction678____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction678___init(val_t p0, val_t p1, int* init_table){
+  int itpos372 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction678].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos372]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11416;
+  fra.me.meth = LOCATE_parser___ReduceAction678___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11416 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction678____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos372] = 1;
+  return;
+}
+void parser___ReduceAction680___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 = 11420;
+  fra.me.meth = LOCATE_parser___ReduceAction680___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11422 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11423 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11424 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11425 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11427 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11427);
+  }
+  /* ./parser//parser.nit:11429 */
+  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:11430 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11431 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11433 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11434 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction680____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11434);
+  }
+  REGB0 = ATTR_parser___ReduceAction680____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction680___init(val_t p0, val_t p1, int* init_table){
+  int itpos373 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction680].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos373]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11437;
+  fra.me.meth = LOCATE_parser___ReduceAction680___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11437 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction680____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos373] = 1;
+  return;
+}
+void parser___ReduceAction682___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 = 11441;
+  fra.me.meth = LOCATE_parser___ReduceAction682___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11443 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11444 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11445 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11446 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11448 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11448);
+  }
+  /* ./parser//parser.nit:11450 */
+  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:11451 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11452 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11454 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11455 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction682____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11455);
+  }
+  REGB0 = ATTR_parser___ReduceAction682____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction682___init(val_t p0, val_t p1, int* init_table){
+  int itpos374 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction682].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos374]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11458;
+  fra.me.meth = LOCATE_parser___ReduceAction682___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11458 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction682____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos374] = 1;
+  return;
+}
+void parser___ReduceAction684___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 = 11462;
+  fra.me.meth = LOCATE_parser___ReduceAction684___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11464 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11465 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11466 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11467 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11469 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11469);
+  }
+  /* ./parser//parser.nit:11471 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11471);
+  }
+  /* ./parser//parser.nit:11472 */
+  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:11473 */
+  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:11474 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11475 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction684____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11475);
+  }
+  REGB0 = ATTR_parser___ReduceAction684____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction684___init(val_t p0, val_t p1, int* init_table){
+  int itpos375 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction684].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos375]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11478;
+  fra.me.meth = LOCATE_parser___ReduceAction684___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11478 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction684____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos375] = 1;
+  return;
+}
+void parser___ReduceAction688___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 = 11482;
+  fra.me.meth = LOCATE_parser___ReduceAction688___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11484 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11485 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11486 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11487 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11489 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11489);
+  }
+  /* ./parser//parser.nit:11491 */
+  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:11492 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11493 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11495 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11496 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction688____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11496);
+  }
+  REGB0 = ATTR_parser___ReduceAction688____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction688___init(val_t p0, val_t p1, int* init_table){
+  int itpos376 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction688].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos376]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11499;
+  fra.me.meth = LOCATE_parser___ReduceAction688___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11499 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction688____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos376] = 1;
+  return;
+}
+void parser___ReduceAction689___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 = 11503;
+  fra.me.meth = LOCATE_parser___ReduceAction689___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11505 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11506 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11507 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11509 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11510 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11512 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11513 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction689____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11513);
+  }
+  REGB0 = ATTR_parser___ReduceAction689____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction689___init(val_t p0, val_t p1, int* init_table){
+  int itpos377 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction689].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos377]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11516;
+  fra.me.meth = LOCATE_parser___ReduceAction689___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11516 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction689____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos377] = 1;
+  return;
+}
+void parser___ReduceAction690___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 = 11520;
+  fra.me.meth = LOCATE_parser___ReduceAction690___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11522 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11524 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11525 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11527 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11527);
+  }
+  /* ./parser//parser.nit:11529 */
+  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:11530 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11531 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11533 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11534 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction690____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11534);
+  }
+  REGB0 = ATTR_parser___ReduceAction690____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction690___init(val_t p0, val_t p1, int* init_table){
+  int itpos378 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction690].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos378]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11537;
+  fra.me.meth = LOCATE_parser___ReduceAction690___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11537 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction690____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos378] = 1;
+  return;
+}
+void parser___ReduceAction691___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 = 11541;
+  fra.me.meth = LOCATE_parser___ReduceAction691___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[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:11543 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11544 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11545 */
+  fra.me.REG[4] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11547 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11548 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11550 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./parser//parser.nit:11551 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction691____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11551);
+  }
+  REGB0 = ATTR_parser___ReduceAction691____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction691___init(val_t p0, val_t p1, int* init_table){
+  int itpos379 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction691].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos379]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11554;
+  fra.me.meth = LOCATE_parser___ReduceAction691___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11554 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction691____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos379] = 1;
+  return;
+}
+void parser___ReduceAction692___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 = 11558;
+  fra.me.meth = LOCATE_parser___ReduceAction692___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[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:11560 */
+  fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:11561 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11562 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11563 */
+  fra.me.REG[5] = NEW_Array_array___Array___init();
+  /* ./parser//parser.nit:11565 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11565);
+  }
+  /* ./parser//parser.nit:11567 */
+  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:11568 */
+  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(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_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:11569 */
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* ./parser//parser.nit:11571 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* ./parser//parser.nit:11572 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction692____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11572);
+  }
+  REGB0 = ATTR_parser___ReduceAction692____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void parser___ReduceAction692___init(val_t p0, val_t p1, int* init_table){
+  int itpos380 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ReduceAction692].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos380]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11575;
+  fra.me.meth = LOCATE_parser___ReduceAction692___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./parser//parser.nit:11575 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_parser___ReduceAction692____goto(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos380] = 1;
   return;
 }