nitg: Modified compilation routine to avoid use of String contructors
[nit.git] / c_src / parser._sep.c
index 03b00e5..77ad566 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(variable[0])->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(variable[0])->vft[INIT_TABLE_POS_State].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___Parser___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 34, LOCATE_parser___Parser___init};
-  val_t variable[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  variable[0] =  self;
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->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(variable[0])->vft[INIT_TABLE_POS_Parser].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-val_t parser___Parser___go_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 45, LOCATE_parser___Parser___go_to};
-  val_t variable[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]));
+static const char LOCATE_parser___State___state[] = "parser::State::state";
+val_t parser___State___state(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10;
+  fra.me.meth = LOCATE_parser___State___state;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:10 */
+  REGB0 = TAG_Bool(ATTR_parser___State____state(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_state", LOCATE_parser, 10);
+  }
+  REGB0 = ATTR_parser___State____state(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___State___state__eq[] = "parser::State::state=";
+void parser___State___state__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10;
+  fra.me.meth = LOCATE_parser___State___state__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser.nit:10 */
+  ATTR_parser___State____state(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___State___nodes[] = "parser::State::nodes";
+val_t parser___State___nodes(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13;
+  fra.me.meth = LOCATE_parser___State___nodes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:13 */
+  fra.me.REG[0] = ATTR_parser___State____nodes(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___State___nodes__eq[] = "parser::State::nodes=";
+void parser___State___nodes__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13;
+  fra.me.meth = LOCATE_parser___State___nodes__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13 */
+  ATTR_parser___State____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___State___init[] = "parser::State::init";
+void parser___State___init(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___State].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16;
+  fra.me.meth = LOCATE_parser___State___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* parser/parser.nit:18 */
+  ATTR_parser___State____state(fra.me.REG[0]) = REGB0;
+  /* parser/parser.nit:19 */
+  ATTR_parser___State____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
+  return;
+}
+static const char LOCATE_parser___Parser___init[] = "parser::Parser::init";
+void parser___Parser___init(val_t p0, val_t p1, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___Parser].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos1]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 34;
+  fra.me.meth = LOCATE_parser___Parser___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:37 */
+  ATTR_parser___Parser____lexer(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:38 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_parser___Parser____stack(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:39 */
+  REGB0 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:239 */
+  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+  /* parser/parser.nit:39 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB0;
+  /* parser/parser.nit:40 */
+  CALL_parser___Parser___build_reduce_table(fra.me.REG[0])(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos1] = 1;
+  return;
+}
+static const char LOCATE_parser___Parser___go_to[] = "parser::Parser::go_to";
+val_t parser___Parser___go_to(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t REGB5;
+  val_t REGB6;
+  val_t REGB7;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 43;
+  fra.me.meth = LOCATE_parser___Parser___go_to;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser.nit:46 */
+  REGB1 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+  /* parser/parser.nit:47 */
+  REGB2 = TAG_Int(1);
+  /* parser/parser.nit:48 */
+  REGB3 = TAG_Int(0);
+  REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+  REGB4 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:240 */
+  REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
+  /* parser/parser.nit:50 */
+  while(1) {
+    REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:234 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB4));
+    /* parser/parser.nit:50 */
+    if (UNTAG_Bool(REGB3)) {
+      /* ../lib/standard/kernel.nit:238 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
+      /* parser/parser.nit:51 */
+      REGB5 = TAG_Int(2);
+      /* ../lib/standard/kernel.nit:242 */
+      REGB5 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB5));
+      /* parser/parser.nit:52 */
+      REGB3 = TAG_Int(2);
+      /* ../lib/standard/kernel.nit:241 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB5)*UNTAG_Int(REGB3));
+      /* parser/parser.nit:52 */
+      REGB6 = TAG_Int(1);
+      /* ../lib/standard/kernel.nit:238 */
+      REGB6 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB6));
+      /* parser/parser.nit:54 */
+      REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB6);
+      REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB7)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      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]));
+      /* ../lib/standard/kernel.nit:235 */
+      REGB7 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
+      /* parser/parser.nit:55 */
+      if (UNTAG_Bool(REGB7)) {
+        /* parser/parser.nit:56 */
+        REGB7 = TAG_Int(1);
+        /* ../lib/standard/kernel.nit:240 */
+        REGB7 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB7));
+        /* parser/parser.nit:56 */
+        REGB4 = REGB7;
+      } else {
+        REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB7)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:237 */
+        REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
+        /* parser/parser.nit:57 */
+        if (UNTAG_Bool(REGB3)) {
+          /* parser/parser.nit:58 */
+          REGB3 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:238 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB3));
+          /* parser/parser.nit:58 */
+          REGB2 = REGB3;
+        } else {
+          /* parser/parser.nit:60 */
+          REGB3 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:238 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB3));
+          /* parser/parser.nit:60 */
+          REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+          goto label1;
         }
-        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:50 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* parser/parser.nit:64 */
+  REGB2 = TAG_Int(2);
+  REGB2 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+  REGB3 = REGB2;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB3;
+}
+static const char LOCATE_parser___Parser___push[] = "parser::Parser::push";
+void parser___Parser___push(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 67;
+  fra.me.meth = LOCATE_parser___Parser___push;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* parser/parser.nit:70 */
+  REGB1 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 70);
+  }
+  REGB1 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  REGB2 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:238 */
+  REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+  /* parser/parser.nit:71 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB2;
+  /* parser/parser.nit:72 */
+  REGB1 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 72);
+  }
+  fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:24 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+  }
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+  REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB3)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:235 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+  /* parser/parser.nit:72 */
+  if (UNTAG_Bool(REGB1)) {
+    /* parser/parser.nit:73 */
+    REGB1 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 73);
+    }
+    fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB1 = TAG_Int(0);
+    REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:236 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
+    /* ../lib/standard/collection/array.nit:280 */
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      }
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+      REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:235 */
+      REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+    } else {
+      /* ../lib/standard/collection/array.nit:280 */
+      REGB3 = TAG_Bool(0);
+      REGB1 = REGB3;
+    }
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    }
+    /* ../lib/standard/collection/array.nit:281 */
+    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    }
+    /* ../lib/standard/collection/array.nit:724 */
+    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+    /* ../lib/standard/collection/array.nit:281 */
+    goto label1;
+    label1: while(0);
+    /* parser/parser.nit:74 */
+    CALL_parser___State___state__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
+    /* parser/parser.nit:75 */
+    CALL_parser___State___nodes__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  } else {
+    /* parser/parser.nit:77 */
+    REGB2 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 77);
+    }
+    fra.me.REG[0] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+    fra.me.REG[1] = NEW_State_parser___State___init(REGB0, fra.me.REG[1]);
+    CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___Parser___state[] = "parser::Parser::state";
+val_t parser___Parser___state(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 81;
+  fra.me.meth = LOCATE_parser___Parser___state;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:84 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 84);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 84);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:280 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:236 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ../lib/standard/collection/array.nit:280 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:235 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB2 = TAG_Bool(0);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+  }
+  /* ../lib/standard/collection/array.nit:281 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+  }
+  /* ../lib/standard/collection/array.nit:724 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+  /* ../lib/standard/collection/array.nit:281 */
+  goto label1;
+  label1: while(0);
+  /* parser/parser.nit:84 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser, 84);
+  }
+  REGB0 = CALL_parser___State___state(fra.me.REG[1])(fra.me.REG[1]);
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___Parser___pop[] = "parser::Parser::pop";
+val_t parser___Parser___pop(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 87;
+  fra.me.meth = LOCATE_parser___Parser___pop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:90 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 90);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 90);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:280 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:236 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ../lib/standard/collection/array.nit:280 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:235 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB2 = TAG_Bool(0);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+  }
+  /* ../lib/standard/collection/array.nit:281 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+  }
+  /* ../lib/standard/collection/array.nit:724 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+  /* ../lib/standard/collection/array.nit:281 */
+  goto label1;
+  label1: while(0);
+  /* parser/parser.nit:90 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser, 90);
+  }
+  fra.me.REG[1] = CALL_parser___State___nodes(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:91 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 91);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  REGB1 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:240 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* parser/parser.nit:91 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB1;
+  /* parser/parser.nit:92 */
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_parser___Parser___parse[] = "parser::Parser::parse";
+val_t parser___Parser___parse(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t REGB5;
+  val_t REGB6;
+  val_t REGB7;
+  val_t REGB8;
+  val_t REGB9;
+  val_t tmp;
+            static val_t once_value_4; /* Once value */
+            static val_t once_value_5; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 95;
+  fra.me.meth = LOCATE_parser___Parser___parse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:98 */
+  REGB0 = TAG_Int(0);
+  CALL_parser___Parser___push(fra.me.REG[0])(fra.me.REG[0], REGB0, NIT_NULL);
+  /* parser/parser.nit:100 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____lexer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_lexer", LOCATE_parser, 100);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____lexer(fra.me.REG[0]);
+  /* parser/parser.nit:101 */
+  while(1) {
+    /* parser/parser.nit:102 */
+    fra.me.REG[2] = CALL_parser___lexer___Lexer___peek(fra.me.REG[1])(fra.me.REG[1]);
+    /* parser/parser.nit:103 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AError, ID_parser___parser_nodes___AError)) /*cast AError*/;
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:104 */
+      fra.me.REG[3] = NEW_Start_parser___parser_nodes___Start___init(NIT_NULL, fra.me.REG[2]);
+      goto label1;
+    }
+    /* parser/parser.nit:107 */
+    REGB0 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+    /* parser/parser.nit:108 */
+    REGB1 = CALL_parser___lexer___Token___parser_index(fra.me.REG[2])(fra.me.REG[2]);
+    /* parser/parser.nit:109 */
+    REGB2 = TAG_Int(2);
+    REGB2 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+    /* parser/parser.nit:110 */
+    REGB3 = TAG_Int(3);
+    REGB3 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+    /* parser/parser.nit:112 */
+    REGB4 = TAG_Int(1);
+    /* parser/parser.nit:113 */
+    REGB5 = TAG_Int(0);
+    REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
+    REGB6 = TAG_Int(1);
+    /* ../lib/standard/kernel.nit:240 */
+    REGB6 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB6));
+    /* parser/parser.nit:115 */
+    while(1) {
+      REGB5 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB5)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:234 */
+      REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB6));
+      /* parser/parser.nit:115 */
+      if (UNTAG_Bool(REGB5)) {
+        /* ../lib/standard/kernel.nit:238 */
+        REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
+        /* parser/parser.nit:116 */
+        REGB7 = TAG_Int(2);
+        /* ../lib/standard/kernel.nit:242 */
+        REGB7 = TAG_Int(UNTAG_Int(REGB5)/UNTAG_Int(REGB7));
+        /* parser/parser.nit:117 */
+        REGB5 = TAG_Int(3);
+        /* ../lib/standard/kernel.nit:241 */
+        REGB5 = TAG_Int(UNTAG_Int(REGB7)*UNTAG_Int(REGB5));
+        /* parser/parser.nit:117 */
+        REGB8 = TAG_Int(1);
+        /* ../lib/standard/kernel.nit:238 */
+        REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
+        /* parser/parser.nit:119 */
+        REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB8);
+        REGB9 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB9)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:235 */
+        REGB9 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB5));
+        /* parser/parser.nit:120 */
+        if (UNTAG_Bool(REGB9)) {
+          /* parser/parser.nit:121 */
+          REGB9 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:240 */
+          REGB9 = TAG_Int(UNTAG_Int(REGB7)-UNTAG_Int(REGB9));
+          /* parser/parser.nit:121 */
+          REGB6 = REGB9;
+        } else {
+          REGB9 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB9)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:237 */
+          REGB5 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB5));
+          /* parser/parser.nit:122 */
+          if (UNTAG_Bool(REGB5)) {
+            /* parser/parser.nit:123 */
+            REGB5 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB5));
+            /* parser/parser.nit:123 */
+            REGB4 = REGB5;
+          } else {
+            /* parser/parser.nit:125 */
+            REGB5 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB5));
+            /* parser/parser.nit:125 */
+            REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
+            REGB2 = REGB5;
+            /* parser/parser.nit:126 */
+            REGB5 = TAG_Int(2);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB5));
+            /* parser/parser.nit:126 */
+            REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
+            REGB3 = REGB5;
+            /* parser/parser.nit:127 */
+            goto label2;
+          }
+        }
+      } else {
+        /* parser/parser.nit:115 */
+        goto label2;
       }
     }
-    continue_4: while(0);
-  }
-  break_4: while(0);
-  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:131 */
+    REGB0 = TAG_Int(0);
+    REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
+    if (UNTAG_Bool(REGB4)) {
+    } else {
+      /* ../lib/standard/kernel.nit:230 */
+      REGB0 = TAG_Bool((REGB2)==(REGB0));
+      /* parser/parser.nit:131 */
+      REGB4 = REGB0;
+    }
+    if (UNTAG_Bool(REGB4)) {
+      /* parser/parser.nit:132 */
+      fra.me.REG[4] = CALL_parser___lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_parser___Parser___push(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[4]);
+    } else {
+      /* parser/parser.nit:133 */
+      REGB4 = TAG_Int(1);
+      REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        /* ../lib/standard/kernel.nit:230 */
+        REGB4 = TAG_Bool((REGB2)==(REGB4));
+        /* parser/parser.nit:133 */
+        REGB0 = REGB4;
       }
-      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(REGB0)) {
+        /* parser/parser.nit:134 */
+        REGB0 = TAG_Bool(ATTR_parser___Parser____reduce_table(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_parser, 134);
+        }
+        fra.me.REG[4] = ATTR_parser___Parser____reduce_table(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB0 = TAG_Int(0);
+        REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        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/kernel.nit:236 */
+        REGB0 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB0));
+        /* ../lib/standard/collection/array.nit:280 */
+        if (UNTAG_Bool(REGB0)) {
+          REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
-          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]));
+          REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:235 */
+          REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
+        } else {
+          /* ../lib/standard/collection/array.nit:280 */
+          REGB4 = TAG_Bool(0);
+          REGB0 = REGB4;
+        }
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        }
+        /* ../lib/standard/collection/array.nit:281 */
+        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        }
+        /* ../lib/standard/collection/array.nit:724 */
+        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
+        /* ../lib/standard/collection/array.nit:281 */
+        goto label3;
+        label3: while(0);
+        /* parser/parser.nit:134 */
+        REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 134);
+        }
+        CALL_parser___ReduceAction___action(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+      } else {
+        /* parser/parser.nit:135 */
+        REGB3 = TAG_Int(2);
+        REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          /* ../lib/standard/kernel.nit:230 */
+          REGB3 = TAG_Bool((REGB2)==(REGB3));
+          /* parser/parser.nit:135 */
+          REGB0 = REGB3;
+        }
+        if (UNTAG_Bool(REGB0)) {
+          /* parser/parser.nit:136 */
+          fra.me.REG[4] = CALL_parser___lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
+          /* parser/parser.nit:137 */
+          REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___EOF, ID_parser___parser_nodes___EOF)) /*cast EOF*/;
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser, 137);
+          }
+          /* parser/parser.nit:138 */
+          fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[0])(fra.me.REG[0]);
+          /* parser/parser.nit:139 */
+          REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModule, ID_parser___parser_nodes___AModule)) /*cast AModule*/;
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser, 139);
+          }
+          /* parser/parser.nit:140 */
+          fra.me.REG[4] = NEW_Start_parser___parser_nodes___Start___init(fra.me.REG[5], fra.me.REG[4]);
+          /* parser/parser.nit:141 */
+          fra.me.REG[5] = NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init();
+          CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+          /* parser/parser.nit:142 */
+          fra.me.REG[3] = fra.me.REG[4];
+          goto label1;
+        } else {
+          /* parser/parser.nit:143 */
+          REGB0 = TAG_Int(3);
+          REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            /* ../lib/standard/kernel.nit:230 */
+            REGB0 = TAG_Bool((REGB2)==(REGB0));
+            /* parser/parser.nit:143 */
+            REGB3 = REGB0;
+          }
+          if (UNTAG_Bool(REGB3)) {
+            /* parser/parser.nit:144 */
+            REGB3 = TAG_Int(3);
+            fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
+            if (!once_value_4) {
+              fra.me.REG[5] = BOX_NativeString("Syntax error: unexpected ");
+              REGB3 = TAG_Int(25);
+              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+              once_value_4 = fra.me.REG[5];
+              register_static_object(&once_value_4);
+            } else fra.me.REG[5] = once_value_4;
+            fra.me.REG[5] = fra.me.REG[5];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            if (!once_value_5) {
+              fra.me.REG[5] = BOX_NativeString(".");
+              REGB3 = TAG_Int(1);
+              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+              once_value_5 = fra.me.REG[5];
+              register_static_object(&once_value_5);
+            } else fra.me.REG[5] = once_value_5;
+            fra.me.REG[5] = fra.me.REG[5];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+            fra.me.REG[5] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
+            fra.me.REG[2] = NEW_AParserError_parser___lexer___AParserError___init_parser_error(fra.me.REG[4], fra.me.REG[5], fra.me.REG[2]);
+            /* parser/parser.nit:145 */
+            fra.me.REG[2] = NEW_Start_parser___parser_nodes___Start___init(NIT_NULL, fra.me.REG[2]);
+            /* parser/parser.nit:146 */
+            fra.me.REG[3] = fra.me.REG[2];
+            goto label1;
           }
-          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];
+}
+static const char LOCATE_parser___Parser___build_reduce_table[] = "parser::Parser::build_reduce_table";
+void parser___Parser___build_reduce_table(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 152;
+  fra.me.meth = LOCATE_parser___Parser___build_reduce_table;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:154 */
+  REGB0 = TAG_Int(1291);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  /* parser/parser.nit:155 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction0_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:156 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction1_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:157 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction2_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:158 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction3_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:159 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction4_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:160 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction5_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:161 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction6_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:162 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction7_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:163 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction8_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:164 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction9_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:165 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction10_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:166 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction11_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:167 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction12_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:168 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction13_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:169 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction14_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:170 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction15_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:171 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction16_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:172 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction17_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:173 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction18_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:174 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction19_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:175 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction20_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:176 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction21_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:177 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction22_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:178 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction23_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:179 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction24_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:180 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction25_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:181 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction26_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:182 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction27_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:183 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction28_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:184 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction29_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:185 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction30_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:186 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction31_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:187 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction32_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:188 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction33_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:189 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction34_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:190 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction35_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:191 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:192 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction37_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:193 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction38_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:194 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction39_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:195 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction40_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:196 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction41_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:197 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction42_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:198 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction43_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:199 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction44_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:200 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction45_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:201 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction46_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:202 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction47_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:203 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction48_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:204 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction49_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:205 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction50_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:206 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction51_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:207 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction52_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:208 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction53_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:209 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction54_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:210 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction55_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:211 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction56_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:212 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction57_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:213 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction58_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:214 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction59_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:215 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction60_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:216 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction61_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:217 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction62_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:218 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction63_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:219 */
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_ReduceAction64_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:220 */
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_ReduceAction65_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:221 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction66_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:222 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction67_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:223 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:224 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:225 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_ReduceAction70_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:226 */
+  REGB0 = TAG_Int(4);
+  fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:227 */
+  REGB0 = TAG_Int(4);
+  fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:228 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction73_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:229 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction74_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:230 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction75_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:231 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction76_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:232 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction77_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:233 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction78_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:234 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction79_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:235 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction80_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:236 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction81_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:237 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction82_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:238 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction83_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:239 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction84_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:240 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction85_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:241 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction86_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:242 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction87_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:243 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction88_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:244 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction89_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:245 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction90_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:246 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction91_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:247 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction92_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:248 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction93_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:249 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction94_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:250 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction95_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:251 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction96_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:252 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction97_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:253 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction98_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:254 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction99_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:255 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction100_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:256 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction101_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:257 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction102_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:258 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction103_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:259 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction104_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:260 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction105_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:261 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction106_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:262 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction107_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:263 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction108_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:264 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction109_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:265 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction110_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:266 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction111_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:267 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction112_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:268 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction113_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:269 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction114_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:270 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction115_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:271 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction116_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:272 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction117_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:273 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction118_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:274 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction119_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:275 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction120_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:276 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction121_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:277 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction122_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:278 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction123_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:279 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction124_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:280 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction125_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:281 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction126_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:282 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction127_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:283 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction128_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:284 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction129_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:285 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction130_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:286 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction131_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:287 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction132_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:288 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction133_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:289 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction134_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:290 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction135_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:291 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction136_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:292 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction137_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:293 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction138_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:294 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction139_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:295 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction140_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:296 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction141_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:297 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction142_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:298 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[2] = NEW_ReduceAction143_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:299 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[2] = NEW_ReduceAction144_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:300 */
+  REGB0 = TAG_Int(8);
+  fra.me.REG[2] = NEW_ReduceAction145_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:301 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction146_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:302 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction147_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:303 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction148_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:304 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction149_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:305 */
+  REGB0 = TAG_Int(10);
+  fra.me.REG[2] = NEW_ReduceAction150_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:306 */
+  REGB0 = TAG_Int(10);
+  fra.me.REG[2] = NEW_ReduceAction151_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:307 */
+  REGB0 = TAG_Int(11);
+  fra.me.REG[2] = NEW_ReduceAction152_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:308 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction153_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:309 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction154_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:310 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction155_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:311 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction156_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:312 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction157_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:313 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction158_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:314 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction159_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:315 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction160_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:316 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction161_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:317 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction162_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:318 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction163_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:319 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction164_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:320 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction165_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:321 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction166_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:322 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction167_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:323 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction168_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:324 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:325 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:326 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction171_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:327 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction172_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:328 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction173_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:329 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction174_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:330 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction175_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:331 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction176_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:332 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction177_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:333 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction178_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:334 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction179_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:335 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction180_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:336 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:337 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction182_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:338 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction183_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:339 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction184_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:340 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction185_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:341 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction186_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:342 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction187_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:343 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction188_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:344 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction189_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:345 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction190_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:346 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction191_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:347 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction192_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:348 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction193_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:349 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction194_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:350 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction195_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:351 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction196_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:352 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction197_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:353 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction198_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:354 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction199_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:355 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction200_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:356 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction201_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:357 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:358 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:359 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:360 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:361 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction206_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:362 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction207_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:363 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction208_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:364 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction209_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:365 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction210_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:366 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction211_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:367 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction212_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:368 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction213_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:369 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction214_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:370 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction215_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:371 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction216_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:372 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction217_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:373 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction218_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:374 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction219_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:375 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction220_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:376 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction221_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:377 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction222_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:378 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction223_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:379 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction224_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:380 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction225_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:381 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction226_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:382 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction227_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:383 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction228_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:384 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction229_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:385 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:386 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:387 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:388 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:389 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:390 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:391 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:392 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:393 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction238_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:394 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction239_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:395 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction240_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:396 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction241_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:397 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction242_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:398 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction243_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:399 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction244_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:400 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction245_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:401 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction246_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:402 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction247_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:403 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction248_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:404 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction249_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:405 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction250_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:406 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction251_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:407 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction252_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:408 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction253_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:409 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction254_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:410 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction255_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:411 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction256_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:412 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction257_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:413 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction258_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:414 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction259_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:415 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction260_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:416 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction261_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:417 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction262_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:418 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction263_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:419 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction264_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:420 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction265_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:421 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction266_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:422 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction267_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:423 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction268_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:424 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction269_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:425 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction270_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:426 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction271_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:427 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction272_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:428 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction273_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:429 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction274_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:430 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction275_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:431 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction276_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:432 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction277_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:433 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction278_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:434 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction279_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:435 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:436 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:437 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:438 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:439 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction284_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:440 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction285_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:441 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction286_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:442 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction287_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:443 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction288_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:444 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction289_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:445 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction290_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:446 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction291_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:447 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction292_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:448 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction293_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:449 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction294_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:450 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:451 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction296_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:452 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:453 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:454 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:455 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction300_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:456 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:457 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction302_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:458 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:459 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:460 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:461 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:462 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:463 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:464 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:465 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:466 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:467 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:468 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:469 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction314_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:470 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:471 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:472 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction317_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:473 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:474 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:475 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:476 */
+  REGB0 = TAG_Int(13);
+  fra.me.REG[2] = NEW_ReduceAction321_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:477 */
+  REGB0 = TAG_Int(13);
+  fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:478 */
+  REGB0 = TAG_Int(14);
+  fra.me.REG[2] = NEW_ReduceAction321_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:479 */
+  REGB0 = TAG_Int(14);
+  fra.me.REG[2] = NEW_ReduceAction324_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:480 */
+  REGB0 = TAG_Int(15);
+  fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:481 */
+  REGB0 = TAG_Int(15);
+  fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:482 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:483 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:484 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:485 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction330_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:486 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction331_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:487 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction332_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:488 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction333_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:489 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction334_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:490 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction335_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:491 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:492 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:493 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:494 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:495 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction340_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:496 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:497 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:498 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:499 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:500 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:501 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:502 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:503 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:504 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction349_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:505 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction350_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:506 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:507 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:508 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction353_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:509 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction354_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:510 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:511 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction356_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:512 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction357_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:513 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction358_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:514 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction359_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:515 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:516 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:517 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction362_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:518 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction363_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:519 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction364_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:520 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction365_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:521 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:522 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction367_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:523 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:524 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:525 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:526 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:527 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:528 */
+  REGB0 = TAG_Int(23);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:529 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:530 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction375_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:531 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction376_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:532 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction377_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:533 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction378_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:534 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction379_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:535 */
+  REGB0 = TAG_Int(25);
+  fra.me.REG[2] = NEW_ReduceAction380_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:536 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:537 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction382_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:538 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction383_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:539 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction384_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:540 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction385_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:541 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction386_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:542 */
+  REGB0 = TAG_Int(27);
+  fra.me.REG[2] = NEW_ReduceAction387_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:543 */
+  REGB0 = TAG_Int(28);
+  fra.me.REG[2] = NEW_ReduceAction388_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:544 */
+  REGB0 = TAG_Int(28);
+  fra.me.REG[2] = NEW_ReduceAction389_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:545 */
+  REGB0 = TAG_Int(29);
+  fra.me.REG[2] = NEW_ReduceAction390_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:546 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction391_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:547 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction391_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:548 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction393_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:549 */
+  REGB0 = TAG_Int(31);
+  fra.me.REG[2] = NEW_ReduceAction394_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:550 */
+  REGB0 = TAG_Int(31);
+  fra.me.REG[2] = NEW_ReduceAction395_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:551 */
+  REGB0 = TAG_Int(31);
+  fra.me.REG[2] = NEW_ReduceAction396_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:552 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction397_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:553 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction398_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:554 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction399_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:555 */
+  REGB0 = TAG_Int(33);
+  fra.me.REG[2] = NEW_ReduceAction400_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:556 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction401_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:557 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction402_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:558 */
+  REGB0 = TAG_Int(35);
+  fra.me.REG[2] = NEW_ReduceAction403_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:559 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction404_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:560 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction405_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:561 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction406_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:562 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction407_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:563 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction408_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:564 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction409_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:565 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction410_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:566 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction411_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:567 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction412_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:568 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction413_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:569 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction414_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:570 */
+  REGB0 = TAG_Int(39);
+  fra.me.REG[2] = NEW_ReduceAction414_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:571 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:572 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction417_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:573 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction418_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:574 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:575 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction420_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:576 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction421_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:577 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction422_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:578 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction423_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:579 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction424_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:580 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction425_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:581 */
+  REGB0 = TAG_Int(44);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:582 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:583 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:584 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:585 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:586 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:587 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:588 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:589 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:590 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:591 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:592 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:593 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:594 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:595 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:596 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:597 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:598 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:599 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:600 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:601 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:602 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:603 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:604 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:605 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:606 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:607 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:608 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:609 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:610 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction455_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:611 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction456_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:612 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction457_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:613 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction458_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:614 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction459_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:615 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction460_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:616 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction461_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:617 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction462_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:618 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction463_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:619 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction464_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:620 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction465_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:621 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction466_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:622 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction467_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:623 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction468_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:624 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction469_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:625 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction470_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:626 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction471_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:627 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction472_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:628 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction473_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:629 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction474_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:630 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction475_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:631 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction476_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:632 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction477_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:633 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction478_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:634 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction479_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:635 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction480_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:636 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction481_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:637 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction482_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:638 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction483_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:639 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction484_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:640 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:641 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:642 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:643 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:644 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:645 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:646 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:647 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:648 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction493_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:649 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction494_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:650 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction495_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:651 */
+  REGB0 = TAG_Int(55);
+  fra.me.REG[2] = NEW_ReduceAction496_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:652 */
+  REGB0 = TAG_Int(55);
+  fra.me.REG[2] = NEW_ReduceAction497_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:653 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction498_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:654 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction499_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:655 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction500_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:656 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction501_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:657 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction502_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:658 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:659 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction418_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:660 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction505_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:661 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction506_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:662 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction507_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:663 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction508_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:664 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction509_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:665 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction510_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:666 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction511_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:667 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction512_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:668 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction513_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:669 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction514_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:670 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction515_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:671 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction516_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:672 */
+  REGB0 = TAG_Int(62);
+  fra.me.REG[2] = NEW_ReduceAction517_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:673 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:674 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:675 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:676 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction521_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:677 */
+  REGB0 = TAG_Int(64);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:678 */
+  REGB0 = TAG_Int(64);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:679 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:680 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:681 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:682 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:683 */
+  REGB0 = TAG_Int(66);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:684 */
+  REGB0 = TAG_Int(66);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:685 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:686 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:687 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction532_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:688 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:689 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:690 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:691 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:692 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:693 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:694 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:695 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:696 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:697 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:698 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction543_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:699 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction544_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:700 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:701 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction546_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:702 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction547_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:703 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction548_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:704 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:705 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction550_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:706 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction551_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:707 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:708 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction553_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:709 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction554_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:710 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction555_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:711 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction556_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:712 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction557_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:713 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:714 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:715 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:716 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:717 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:718 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:719 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction564_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:720 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction565_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:721 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction566_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:722 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction567_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:723 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction568_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:724 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction569_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:725 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction570_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:726 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction571_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:727 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction572_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:728 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction573_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:729 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction574_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:730 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction575_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:731 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction576_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:732 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction577_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:733 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction578_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:734 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction579_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:735 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction580_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:736 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction581_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:737 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction582_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:738 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction583_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:739 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction584_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:740 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction585_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:741 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction586_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:742 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction587_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:743 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:744 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction589_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:745 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction590_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:746 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction591_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:747 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction592_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:748 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction593_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:749 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction594_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:750 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction595_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:751 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction596_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:752 */
+  REGB0 = TAG_Int(74);
+  fra.me.REG[2] = NEW_ReduceAction597_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:753 */
+  REGB0 = TAG_Int(75);
+  fra.me.REG[2] = NEW_ReduceAction598_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:754 */
+  REGB0 = TAG_Int(76);
+  fra.me.REG[2] = NEW_ReduceAction597_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:755 */
+  REGB0 = TAG_Int(77);
+  fra.me.REG[2] = NEW_ReduceAction600_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:756 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction601_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:757 */
+  REGB0 = TAG_Int(79);
+  fra.me.REG[2] = NEW_ReduceAction602_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:758 */
+  REGB0 = TAG_Int(79);
+  fra.me.REG[2] = NEW_ReduceAction603_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:759 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction604_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:760 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction605_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:761 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction606_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:762 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction607_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:763 */
+  REGB0 = TAG_Int(81);
+  fra.me.REG[2] = NEW_ReduceAction608_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:764 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction609_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:765 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction610_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:766 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction608_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:767 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction612_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:768 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction613_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:769 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction614_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:770 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction615_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:771 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction616_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:772 */
+  REGB0 = TAG_Int(85);
+  fra.me.REG[2] = NEW_ReduceAction617_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:773 */
+  REGB0 = TAG_Int(86);
+  fra.me.REG[2] = NEW_ReduceAction618_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:774 */
+  REGB0 = TAG_Int(86);
+  fra.me.REG[2] = NEW_ReduceAction619_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:775 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction620_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:776 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction621_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:777 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction622_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:778 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction622_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:779 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction624_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:780 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction625_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:781 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction626_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:782 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction627_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:783 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction628_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:784 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction629_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:785 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction630_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:786 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction631_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:787 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction629_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:788 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction633_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:789 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction630_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:790 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction631_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:791 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction636_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:792 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction637_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:793 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction638_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:794 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction639_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:795 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction640_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:796 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction641_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:797 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction642_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:798 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction643_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:799 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction644_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:800 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction645_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:801 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction646_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:802 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction647_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:803 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction648_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:804 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction649_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:805 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction650_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:806 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction651_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:807 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction651_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:808 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction653_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:809 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction654_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:810 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction70_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:811 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction656_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:812 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction657_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:813 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction658_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:814 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction659_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:815 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction651_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:816 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction152_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:817 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction153_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:818 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction154_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:819 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction155_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:820 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction156_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:821 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction157_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:822 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction158_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:823 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction159_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:824 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction160_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:825 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction161_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:826 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction162_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:827 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction163_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:828 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction164_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:829 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:830 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:831 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction171_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:832 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction172_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:833 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction173_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:834 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction174_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:835 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction175_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:836 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction176_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:837 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction177_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:838 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction178_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:839 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction179_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:840 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction180_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:841 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:842 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction182_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:843 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction183_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:844 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction184_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:845 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction185_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:846 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction186_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:847 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction187_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:848 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction188_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:849 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction353_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:850 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction354_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:851 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:852 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction356_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:853 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:854 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction362_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:855 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction404_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:856 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction405_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:857 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction406_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:858 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction407_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:859 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:860 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:861 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:862 */
+  REGB0 = TAG_Int(109);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:863 */
+  REGB0 = TAG_Int(109);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:864 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:865 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:866 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:867 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:868 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:869 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:870 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:871 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:872 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction532_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:873 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:874 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:875 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:876 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:877 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:878 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:879 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:880 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:881 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:882 */
+  REGB0 = TAG_Int(113);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:883 */
+  REGB0 = TAG_Int(113);
+  fra.me.REG[2] = NEW_ReduceAction543_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:884 */
+  REGB0 = TAG_Int(113);
+  fra.me.REG[2] = NEW_ReduceAction544_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:885 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:886 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction546_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:887 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction547_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:888 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction548_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:889 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:890 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction550_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:891 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction551_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:892 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:893 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction553_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:894 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction554_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:895 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction555_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:896 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction556_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:897 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction557_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:898 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:899 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:900 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:901 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:902 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:903 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:904 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction565_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:905 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction572_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:906 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction573_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:907 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction574_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:908 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction575_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:909 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction576_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:910 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction577_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:911 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction578_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:912 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction579_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:913 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction580_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:914 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction581_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:915 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction582_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:916 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction583_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:917 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction584_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:918 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction585_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:919 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction586_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:920 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction587_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:921 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:922 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction589_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:923 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction590_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:924 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction591_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:925 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction592_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:926 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction404_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:927 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction405_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:928 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction406_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:929 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction407_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:930 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction408_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:931 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction409_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:932 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction410_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:933 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction411_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:934 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:935 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:936 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:937 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:938 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:939 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:940 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:941 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:942 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:943 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:944 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:945 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:946 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:947 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:948 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:949 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:950 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:951 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:952 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:953 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:954 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:955 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:956 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:957 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:958 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:959 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:960 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:961 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:962 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction484_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:963 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:964 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:965 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:966 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:967 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:968 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:969 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:970 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:971 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction493_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:972 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:973 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:974 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:975 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:976 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:977 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:978 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:979 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:980 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:981 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:982 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:983 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:984 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:985 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction532_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:986 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:987 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:988 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:989 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:990 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:991 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:992 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:993 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:994 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:995 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:996 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction543_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:997 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction544_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:998 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:999 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction546_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1000 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction547_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1001 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction548_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1002 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1003 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction550_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1004 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction551_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1005 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1006 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction553_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1007 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction554_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1008 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction555_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1009 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction556_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1010 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction557_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1011 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1012 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1013 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1014 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1015 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1016 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1017 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction564_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1018 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction565_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1019 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction572_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1020 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction573_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1021 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction574_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1022 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction575_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1023 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction576_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1024 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction577_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1025 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction578_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1026 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction579_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1027 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction580_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1028 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction581_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1029 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction582_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1030 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction583_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1031 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction584_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1032 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction585_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1033 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction586_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1034 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction587_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1035 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1036 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction591_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1037 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction592_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1038 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction602_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1039 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction603_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1040 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction604_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1041 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction605_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1042 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction618_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1043 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction619_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1044 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction621_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1045 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction622_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1046 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction622_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1047 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction404_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1048 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction405_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1049 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction406_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1050 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction407_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1051 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1052 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1053 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1054 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1055 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1056 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1057 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1058 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1059 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1060 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1061 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1062 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1063 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1064 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction532_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1065 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1066 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1067 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1068 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1069 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1070 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1071 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1072 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1073 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1074 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1075 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction543_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1076 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction544_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1077 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1078 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction546_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1079 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction547_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1080 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction548_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1081 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1082 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction550_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1083 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction551_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1084 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1085 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction553_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1086 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction931_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1087 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction932_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1088 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction933_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1089 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1090 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1091 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction936_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1092 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction565_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1093 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction572_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1094 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction573_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1095 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction574_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1096 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction575_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1097 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction576_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1098 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction577_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1099 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction578_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1100 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction579_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1101 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction580_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1102 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction581_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1103 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction582_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1104 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction583_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1105 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction584_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1106 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction585_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1107 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction586_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1108 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction587_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1109 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1110 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction591_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1111 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction592_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1112 */
+  REGB0 = TAG_Int(146);
+  fra.me.REG[2] = NEW_ReduceAction957_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1113 */
+  REGB0 = TAG_Int(146);
+  fra.me.REG[2] = NEW_ReduceAction958_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1114 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1115 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction417_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1116 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction418_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1117 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1118 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1119 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1120 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1121 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1122 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1123 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1124 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1125 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1126 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1127 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1128 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1129 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1130 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1131 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1132 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1133 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1134 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1135 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1136 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1137 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1138 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1139 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1140 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1141 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1142 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1143 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1144 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1145 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1146 */
+  REGB0 = TAG_Int(149);
+  fra.me.REG[2] = NEW_ReduceAction456_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1147 */
+  REGB0 = TAG_Int(149);
+  fra.me.REG[2] = NEW_ReduceAction457_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1148 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction458_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1149 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction459_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1150 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction460_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1151 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction461_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1152 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction462_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1153 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction463_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1154 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction464_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1155 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction465_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1156 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction466_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1157 */
+  REGB0 = TAG_Int(151);
+  fra.me.REG[2] = NEW_ReduceAction475_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1158 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction476_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1159 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction477_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1160 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction478_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1161 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction479_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1162 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction480_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1163 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction481_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1164 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction482_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1165 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction483_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1166 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction484_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1167 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1168 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1169 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1170 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1171 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1172 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1173 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1174 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1175 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction493_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1176 */
+  REGB0 = TAG_Int(154);
+  fra.me.REG[2] = NEW_ReduceAction496_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1177 */
+  REGB0 = TAG_Int(154);
+  fra.me.REG[2] = NEW_ReduceAction497_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1178 */
+  REGB0 = TAG_Int(155);
+  fra.me.REG[2] = NEW_ReduceAction498_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1179 */
+  REGB0 = TAG_Int(156);
+  fra.me.REG[2] = NEW_ReduceAction505_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1180 */
+  REGB0 = TAG_Int(156);
+  fra.me.REG[2] = NEW_ReduceAction506_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1181 */
+  REGB0 = TAG_Int(157);
+  fra.me.REG[2] = NEW_ReduceAction507_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1182 */
+  REGB0 = TAG_Int(157);
+  fra.me.REG[2] = NEW_ReduceAction508_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1183 */
+  REGB0 = TAG_Int(158);
+  fra.me.REG[2] = NEW_ReduceAction509_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1184 */
+  REGB0 = TAG_Int(158);
+  fra.me.REG[2] = NEW_ReduceAction510_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1185 */
+  REGB0 = TAG_Int(158);
+  fra.me.REG[2] = NEW_ReduceAction511_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1186 */
+  REGB0 = TAG_Int(158);
+  fra.me.REG[2] = NEW_ReduceAction512_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1187 */
+  REGB0 = TAG_Int(159);
+  fra.me.REG[2] = NEW_ReduceAction513_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1188 */
+  REGB0 = TAG_Int(159);
+  fra.me.REG[2] = NEW_ReduceAction514_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1189 */
+  REGB0 = TAG_Int(160);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1190 */
+  REGB0 = TAG_Int(160);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1191 */
+  REGB0 = TAG_Int(160);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1192 */
+  REGB0 = TAG_Int(160);
+  fra.me.REG[2] = NEW_ReduceAction521_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1193 */
+  REGB0 = TAG_Int(161);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1194 */
+  REGB0 = TAG_Int(161);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1195 */
+  REGB0 = TAG_Int(161);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1196 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1197 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1198 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1199 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1200 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1201 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1202 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1203 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1204 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1205 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1206 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1207 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1208 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1209 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1210 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1211 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1212 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1213 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1214 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1215 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction446_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1216 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1217 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1218 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1219 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1220 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1221 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1222 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1223 */
+  REGB0 = TAG_Int(162);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1224 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction484_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1225 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1226 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1227 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1228 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1229 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1230 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1231 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1232 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1233 */
+  REGB0 = TAG_Int(163);
+  fra.me.REG[2] = NEW_ReduceAction493_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1234 */
+  REGB0 = TAG_Int(164);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1235 */
+  REGB0 = TAG_Int(164);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1236 */
+  REGB0 = TAG_Int(164);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1237 */
+  REGB0 = TAG_Int(165);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1238 */
+  REGB0 = TAG_Int(165);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1239 */
+  REGB0 = TAG_Int(165);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1240 */
+  REGB0 = TAG_Int(166);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1241 */
+  REGB0 = TAG_Int(166);
+  fra.me.REG[2] = NEW_ReduceAction417_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1242 */
+  REGB0 = TAG_Int(166);
+  fra.me.REG[2] = NEW_ReduceAction418_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1243 */
+  REGB0 = TAG_Int(167);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1244 */
+  REGB0 = TAG_Int(167);
+  fra.me.REG[2] = NEW_ReduceAction417_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1245 */
+  REGB0 = TAG_Int(167);
+  fra.me.REG[2] = NEW_ReduceAction418_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1246 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1247 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1248 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1249 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1250 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1251 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1252 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1253 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1254 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1255 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1256 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1257 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1258 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1259 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1260 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1261 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1262 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1263 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1264 */
+  REGB0 = TAG_Int(168);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1265 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1266 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1267 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1268 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1269 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1270 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1271 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1272 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1273 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1274 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1275 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1276 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1277 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1278 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1279 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1280 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1281 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1282 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1283 */
+  REGB0 = TAG_Int(169);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1284 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1285 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1286 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1287 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1288 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1289 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1290 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1291 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1292 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1293 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1294 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1295 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1296 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1297 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1298 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1299 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1300 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1301 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1302 */
+  REGB0 = TAG_Int(170);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1303 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1304 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1305 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1306 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1307 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1308 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1309 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1310 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction434_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1311 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction435_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1312 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction436_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1313 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1314 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction438_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1315 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1316 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1317 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1318 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1319 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1320 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1321 */
+  REGB0 = TAG_Int(171);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1322 */
+  REGB0 = TAG_Int(172);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1323 */
+  REGB0 = TAG_Int(172);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1324 */
+  REGB0 = TAG_Int(173);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1325 */
+  REGB0 = TAG_Int(173);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1326 */
+  REGB0 = TAG_Int(173);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1327 */
+  REGB0 = TAG_Int(173);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1328 */
+  REGB0 = TAG_Int(174);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1329 */
+  REGB0 = TAG_Int(174);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1330 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1331 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1332 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1333 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1334 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1335 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1336 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1337 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1338 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1339 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1340 */
+  REGB0 = TAG_Int(175);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1341 */
+  REGB0 = TAG_Int(176);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1342 */
+  REGB0 = TAG_Int(176);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1343 */
+  REGB0 = TAG_Int(177);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1344 */
+  REGB0 = TAG_Int(177);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1345 */
+  REGB0 = TAG_Int(177);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1346 */
+  REGB0 = TAG_Int(177);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1347 */
+  REGB0 = TAG_Int(178);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1348 */
+  REGB0 = TAG_Int(178);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1349 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1350 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1351 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1352 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1353 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1354 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1355 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1356 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1357 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1358 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1359 */
+  REGB0 = TAG_Int(179);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1360 */
+  REGB0 = TAG_Int(180);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1361 */
+  REGB0 = TAG_Int(180);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1362 */
+  REGB0 = TAG_Int(181);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1363 */
+  REGB0 = TAG_Int(181);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1364 */
+  REGB0 = TAG_Int(181);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1365 */
+  REGB0 = TAG_Int(181);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1366 */
+  REGB0 = TAG_Int(182);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1367 */
+  REGB0 = TAG_Int(182);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1368 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1369 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1370 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1371 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1372 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1373 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1374 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1375 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1376 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1377 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1378 */
+  REGB0 = TAG_Int(183);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1379 */
+  REGB0 = TAG_Int(184);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1380 */
+  REGB0 = TAG_Int(184);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1381 */
+  REGB0 = TAG_Int(185);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1382 */
+  REGB0 = TAG_Int(185);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1383 */
+  REGB0 = TAG_Int(185);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1384 */
+  REGB0 = TAG_Int(185);
+  fra.me.REG[2] = NEW_ReduceAction527_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1385 */
+  REGB0 = TAG_Int(186);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1386 */
+  REGB0 = TAG_Int(186);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1387 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction419_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1388 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1389 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1390 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1391 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction535_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1392 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction536_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1393 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction537_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1394 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction538_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1395 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction539_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1396 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction540_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1397 */
+  REGB0 = TAG_Int(187);
+  fra.me.REG[2] = NEW_ReduceAction541_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1398 */
+  REGB0 = TAG_Int(188);
+  fra.me.REG[2] = NEW_ReduceAction612_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1399 */
+  REGB0 = TAG_Int(188);
+  fra.me.REG[2] = NEW_ReduceAction613_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1400 */
+  REGB0 = TAG_Int(188);
+  fra.me.REG[2] = NEW_ReduceAction614_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1401 */
+  REGB0 = TAG_Int(188);
+  fra.me.REG[2] = NEW_ReduceAction615_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1402 */
+  REGB0 = TAG_Int(188);
+  fra.me.REG[2] = NEW_ReduceAction616_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1403 */
+  REGB0 = TAG_Int(189);
+  fra.me.REG[2] = NEW_ReduceAction625_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1404 */
+  REGB0 = TAG_Int(189);
+  fra.me.REG[2] = NEW_ReduceAction628_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1405 */
+  REGB0 = TAG_Int(190);
+  fra.me.REG[2] = NEW_ReduceAction1250_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1406 */
+  REGB0 = TAG_Int(190);
+  fra.me.REG[2] = NEW_ReduceAction1251_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1407 */
+  REGB0 = TAG_Int(191);
+  fra.me.REG[2] = NEW_ReduceAction1252_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1408 */
+  REGB0 = TAG_Int(191);
+  fra.me.REG[2] = NEW_ReduceAction1253_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1409 */
+  REGB0 = TAG_Int(192);
+  fra.me.REG[2] = NEW_ReduceAction1254_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1410 */
+  REGB0 = TAG_Int(192);
+  fra.me.REG[2] = NEW_ReduceAction1255_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1411 */
+  REGB0 = TAG_Int(193);
+  fra.me.REG[2] = NEW_ReduceAction1256_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1412 */
+  REGB0 = TAG_Int(193);
+  fra.me.REG[2] = NEW_ReduceAction1257_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1413 */
+  REGB0 = TAG_Int(194);
+  fra.me.REG[2] = NEW_ReduceAction1258_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1414 */
+  REGB0 = TAG_Int(194);
+  fra.me.REG[2] = NEW_ReduceAction1259_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1415 */
+  REGB0 = TAG_Int(195);
+  fra.me.REG[2] = NEW_ReduceAction1256_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1416 */
+  REGB0 = TAG_Int(195);
+  fra.me.REG[2] = NEW_ReduceAction1257_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1417 */
+  REGB0 = TAG_Int(196);
+  fra.me.REG[2] = NEW_ReduceAction1262_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1418 */
+  REGB0 = TAG_Int(196);
+  fra.me.REG[2] = NEW_ReduceAction1263_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1419 */
+  REGB0 = TAG_Int(197);
+  fra.me.REG[2] = NEW_ReduceAction1264_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1420 */
+  REGB0 = TAG_Int(197);
+  fra.me.REG[2] = NEW_ReduceAction1265_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1421 */
+  REGB0 = TAG_Int(198);
+  fra.me.REG[2] = NEW_ReduceAction1266_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1422 */
+  REGB0 = TAG_Int(198);
+  fra.me.REG[2] = NEW_ReduceAction1267_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1423 */
+  REGB0 = TAG_Int(199);
+  fra.me.REG[2] = NEW_ReduceAction1268_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1424 */
+  REGB0 = TAG_Int(199);
+  fra.me.REG[2] = NEW_ReduceAction1269_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1425 */
+  REGB0 = TAG_Int(200);
+  fra.me.REG[2] = NEW_ReduceAction412_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1426 */
+  REGB0 = TAG_Int(200);
+  fra.me.REG[2] = NEW_ReduceAction1271_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1427 */
+  REGB0 = TAG_Int(201);
+  fra.me.REG[2] = NEW_ReduceAction1272_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1428 */
+  REGB0 = TAG_Int(201);
+  fra.me.REG[2] = NEW_ReduceAction1273_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1429 */
+  REGB0 = TAG_Int(202);
+  fra.me.REG[2] = NEW_ReduceAction380_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1430 */
+  REGB0 = TAG_Int(202);
+  fra.me.REG[2] = NEW_ReduceAction1275_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1431 */
+  REGB0 = TAG_Int(203);
+  fra.me.REG[2] = NEW_ReduceAction609_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1432 */
+  REGB0 = TAG_Int(203);
+  fra.me.REG[2] = NEW_ReduceAction1277_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1433 */
+  REGB0 = TAG_Int(204);
+  fra.me.REG[2] = NEW_ReduceAction609_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1434 */
+  REGB0 = TAG_Int(204);
+  fra.me.REG[2] = NEW_ReduceAction1277_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1435 */
+  REGB0 = TAG_Int(205);
+  fra.me.REG[2] = NEW_ReduceAction618_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1436 */
+  REGB0 = TAG_Int(205);
+  fra.me.REG[2] = NEW_ReduceAction1281_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1437 */
+  REGB0 = TAG_Int(206);
+  fra.me.REG[2] = NEW_ReduceAction1272_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1438 */
+  REGB0 = TAG_Int(206);
+  fra.me.REG[2] = NEW_ReduceAction1273_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1439 */
+  REGB0 = TAG_Int(207);
+  fra.me.REG[2] = NEW_ReduceAction640_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1440 */
+  REGB0 = TAG_Int(207);
+  fra.me.REG[2] = NEW_ReduceAction1285_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1441 */
+  REGB0 = TAG_Int(208);
+  fra.me.REG[2] = NEW_ReduceAction1286_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1442 */
+  REGB0 = TAG_Int(208);
+  fra.me.REG[2] = NEW_ReduceAction1287_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1443 */
+  REGB0 = TAG_Int(209);
+  fra.me.REG[2] = NEW_ReduceAction1288_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1444 */
+  REGB0 = TAG_Int(209);
+  fra.me.REG[2] = NEW_ReduceAction1289_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1445 */
+  REGB0 = TAG_Int(210);
+  fra.me.REG[2] = NEW_ReduceAction609_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1446 */
+  REGB0 = TAG_Int(210);
+  fra.me.REG[2] = NEW_ReduceAction1277_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_items(fra.me.REG[1]);
+  ATTR_parser___Parser____reduce_table(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ComputeProdLocationVisitor___visit[] = "parser::ComputeProdLocationVisitor::(parser_prod::Visitor::visit)";
+void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1477;
+  fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1479 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1480 */
+    goto label1;
+  } else {
+    /* parser/parser.nit:1481 */
+    REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:1482 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1482);
+      }
+      fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
+      /* parser/parser.nit:1483 */
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+      /* parser/parser.nit:1486 */
+      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, 1486);
+      }
+      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1487 */
+        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, 1487);
+        }
+        fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:269 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        }
+        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+        /* ../lib/standard/collection/array.nit:271 */
+        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+        /* ../lib/standard/collection/array.nit:272 */
+        while(1) {
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:235 */
+          REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+          /* ../lib/standard/collection/array.nit:272 */
+          if (UNTAG_Bool(REGB1)) {
+            /* ../lib/standard/collection/array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            }
+            /* ../lib/standard/collection/array.nit:724 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
+            /* parser/parser.nit:1488 */
+            ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB1 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB0 = REGB1;
+          } else {
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label2;
+          }
+        }
+        label2: while(0);
+        /* parser/parser.nit:1490 */
+        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, 1490);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+      }
+      /* parser/parser.nit:1494 */
+      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, 1494);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1495 */
+        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, 1495);
         }
-        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[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:269 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        }
+        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:271 */
+        fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:272 */
+        while(1) {
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:235 */
+          REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+          /* ../lib/standard/collection/array.nit:272 */
+          if (UNTAG_Bool(REGB1)) {
+            /* ../lib/standard/collection/array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            }
+            /* ../lib/standard/collection/array.nit:724 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+            /* parser/parser.nit:1498 */
+            fra.me.REG[6] = fra.me.REG[2];
+            /* parser/parser.nit:1499 */
+            fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
+            /* parser/parser.nit:1500 */
+            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, 1500);
             }
-            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[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, 1500);
             }
-            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;
+            REGB3 = CALL_location___Location___column_end(fra.me.REG[7])(fra.me.REG[7]);
+            REGB4 = CALL_location___Location___column_start(fra.me.REG[6])(fra.me.REG[6]);
+            fra.me.REG[8] = NEW_Location_location___Location___init(fra.me.REG[8], REGB1, REGB2, REGB3, REGB4);
+            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB4 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB0 = REGB4;
+          } else {
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label3;
           }
         }
+        label3: while(0);
+        /* parser/parser.nit:1502 */
+        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, 1502);
+        }
+        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
+      }
+    } else {
+      /* parser/parser.nit:1505 */
+      REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Prod, ID_parser___parser_nodes___Prod)) /*cast Prod*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser, 1505);
+      }
+      /* parser/parser.nit:1506 */
+      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, 1506);
+      }
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+      /* parser/parser.nit:1508 */
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+      /* parser/parser.nit:1509 */
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
+      /* parser/parser.nit:1510 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1510);
+      }
+      CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      /* parser/parser.nit:1511 */
+      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+      /* parser/parser.nit:1512 */
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(0);
+          REGB0 = REGB4;
+        } else {
+          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB0 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB0)) {
+        ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+      }
+      /* parser/parser.nit:1514 */
+      ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
+      /* parser/parser.nit:1515 */
+      fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
+      /* parser/parser.nit:1516 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(0);
+          REGB0 = REGB4;
+        } else {
+          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+          REGB0 = REGB4;
+        }
+      }
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1518 */
+        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(0);
+            REGB0 = REGB4;
+          } else {
+            REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB0 = REGB4;
+          }
+        }
+        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Assert failed", NULL, LOCATE_parser, 1518);
+        }
+        /* parser/parser.nit:1520 */
+        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1520);
+        }
+        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, 1520);
+        }
+        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, 1520);
+        }
+        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, 1520);
+        }
+        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, 1520);
+        }
+        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, 1520);
+        }
+        CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* parser/parser.nit:1522 */
+        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, 1522);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        REGB2 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+        REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+        if (UNTAG_Bool(REGB2)) {
+          /* parser/parser.nit:1523 */
+          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
+          }
+          fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
+          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
+          }
+          REGB2 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
+          }
+          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, 1523);
+          }
+          REGB4 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+          REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
+          }
+          REGB0 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+          fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB2, REGB3, REGB4, REGB0);
+          /* parser/parser.nit:1524 */
+          REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1524);
+          }
+          fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          /* ../lib/standard/collection/array.nit:269 */
+          REGB0 = TAG_Int(0);
+          /* ../lib/standard/collection/array.nit:270 */
+          REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          }
+          REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+          /* ../lib/standard/collection/array.nit:271 */
+          fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+          /* ../lib/standard/collection/array.nit:272 */
+          while(1) {
+            /* ../lib/standard/collection/array.nit:24 */
+            REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+            if (UNTAG_Bool(REGB4)) {
+            } else {
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+            }
+            REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+            REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+            if (UNTAG_Bool(REGB3)) {
+            } else {
+              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+            }
+            /* ../lib/standard/kernel.nit:235 */
+            REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
+            /* ../lib/standard/collection/array.nit:272 */
+            if (UNTAG_Bool(REGB4)) {
+              /* ../lib/standard/collection/array.nit:273 */
+              REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+              if (UNTAG_Bool(REGB4)) {
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              }
+              /* ../lib/standard/collection/array.nit:724 */
+              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB0)];
+              /* parser/parser.nit:1526 */
+              CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB4 = TAG_Int(1);
+              /* ../lib/standard/kernel.nit:238 */
+              REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB0 = REGB4;
+            } else {
+              /* ../lib/standard/collection/array.nit:272 */
+              goto label4;
+            }
+          }
+          label4: while(0);
+          /* parser/parser.nit:1528 */
+          REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1528);
+          }
+          fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+        }
+        /* parser/parser.nit:1531 */
+        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, 1531);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+        if (UNTAG_Bool(REGB0)) {
+          /* parser/parser.nit:1532 */
+          REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
+          }
+          fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
+          REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
+          }
+          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, 1532);
+          }
+          REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
+          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
+          }
+          REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
+          }
+          REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+          fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
+          /* parser/parser.nit:1533 */
+          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, 1533);
+          }
+          fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          /* ../lib/standard/collection/array.nit:269 */
+          REGB2 = TAG_Int(0);
+          /* ../lib/standard/collection/array.nit:270 */
+          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          }
+          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
+          /* ../lib/standard/collection/array.nit:271 */
+          fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
+          /* ../lib/standard/collection/array.nit:272 */
+          while(1) {
+            /* ../lib/standard/collection/array.nit:24 */
+            REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
+            if (UNTAG_Bool(REGB3)) {
+            } else {
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+            }
+            REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
+            REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+            if (UNTAG_Bool(REGB4)) {
+            } else {
+              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+            }
+            /* ../lib/standard/kernel.nit:235 */
+            REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+            /* ../lib/standard/collection/array.nit:272 */
+            if (UNTAG_Bool(REGB3)) {
+              /* ../lib/standard/collection/array.nit:273 */
+              REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+              if (UNTAG_Bool(REGB3)) {
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              }
+              /* ../lib/standard/collection/array.nit:724 */
+              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+              /* parser/parser.nit:1535 */
+              CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB3 = TAG_Int(1);
+              /* ../lib/standard/kernel.nit:238 */
+              REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB2 = REGB3;
+            } else {
+              /* ../lib/standard/collection/array.nit:272 */
+              goto label5;
+            }
+          }
+          label5: while(0);
+          /* parser/parser.nit:1537 */
+          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, 1537);
+          }
+          fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+        }
+      } else {
+        /* parser/parser.nit:1542 */
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            REGB3 = TAG_Bool(0);
+            REGB2 = REGB3;
+          } else {
+            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB2 = REGB3;
+          }
+        }
+        if (UNTAG_Bool(REGB2)) {
+          /* parser/parser.nit:1544 */
+          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, 1544);
+          }
+          fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        } else {
+          /* parser/parser.nit:1547 */
+          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, 1547);
+          }
+          fra.me.REG[0] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+        }
       }
-    }
-    continue_16: while(0);
-  }
-  break_16: while(0);
-  variable[1] =  NIT_NULL /*null*/;
-  goto return_label15;
-  return_label15: while(false);
-  tracehead = trace.prev;
-  return variable[1];
-}
-void parser___Parser___build_reduce_table(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 159, LOCATE_parser___Parser___build_reduce_table};
-  val_t variable[658];
-  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(654)); /*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[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, 825, 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, 828); 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, 835); 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, 841, 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(variable[0])->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(variable[0])->vft[INIT_TABLE_POS_SearchTokensVisitor].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 849, 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, 849);
-  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, 854, 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, 867, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction0].i]) return;
-  return_label33: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction0].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction1___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 871, 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, 878); 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, 887, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction1].i]) return;
-  return_label35: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction1].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction2___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 891, 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, 898); 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, 914, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction2].i]) return;
-  return_label37: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction2].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction3___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 918, 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, 926); 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, 928); 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, 944, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction3].i]) return;
-  return_label39: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction3].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction4___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 948, 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, 955); 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, 971, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction4].i]) return;
-  return_label41: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction4].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction5___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 975, 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, 983); 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, 985); 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, 1001, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction5].i]) return;
-  return_label43: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction5].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction6___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1005, 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, 1013); 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, 1022); 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, 1038, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction6].i]) return;
-  return_label45: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction6].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction7___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1042, 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, 1051); 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, 1053); 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, 1062); 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, 1078, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction7].i]) return;
-  return_label47: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction7].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction8___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1082, 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, 1091); 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, 1109, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction8].i]) return;
-  return_label49: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction8].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction9___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1113, 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, 1123); 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, 1125); 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, 1150, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction9].i]) return;
-  return_label51: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction9].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction10___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1154, 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, 1163); 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, 1166); 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, 1184, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction10].i]) return;
-  return_label53: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction10].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction11___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1188, 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, 1198); 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, 1201); 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, 1203); 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, 1228, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction11].i]) return;
-  return_label55: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction11].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction12___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1232, 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, 1241); 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, 1251); 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, 1269, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction12].i]) return;
-  return_label57: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction12].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction13___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1273, 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, 1283); 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, 1293); 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, 1295); 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, 1320, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction13].i]) return;
-  return_label59: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction13].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction14___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1324, 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, 1334); 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, 1336); 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, 1346); 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, 1364, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction14].i]) return;
-  return_label61: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction14].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction15___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1368, 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, 1379); 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, 1381); 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, 1391); 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, 1393); 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, 1418, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction15].i]) return;
-  return_label63: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction15].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction16___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1422, 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, 1431); 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, 1434); 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, 1459, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction16].i]) return;
-  return_label65: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction16].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction17___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1463, 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, 1473); 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, 1476); 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, 1478); 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, 1510, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction17].i]) return;
-  return_label67: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction17].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction18___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1514, 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, 1524); 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, 1526); 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, 1529); 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, 1554, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction18].i]) return;
-  return_label69: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction18].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction19___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1558, 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, 1569); 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, 1571); 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, 1574); 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, 1576); 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, 1608, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction19].i]) return;
-  return_label71: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction19].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction20___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1612, 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, 1622); 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, 1631); 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, 1634); 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, 1659, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction20].i]) return;
-  return_label73: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction20].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction21___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1663, 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, 1674); 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, 1683); 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, 1686); 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, 1688); 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, 1720, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction21].i]) return;
-  return_label75: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction21].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction22___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1724, 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, 1735); 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, 1737); 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, 1746); 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, 1749); 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, 1774, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction22].i]) return;
-  return_label77: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction22].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction23___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1778, 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, 1790); 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, 1792); 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, 1801); 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, 1804); 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, 1806); 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, 1838, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction23].i]) return;
-  return_label79: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction23].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction24___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1842, 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, 1849); 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, 1861, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction24].i]) return;
-  return_label81: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction24].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction25___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1865, 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, 1873); 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, 1875); 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, 1887, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction25].i]) return;
-  return_label83: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction25].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction26___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1891, 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, 1899); 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, 1908); 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, 1920, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction26].i]) return;
-  return_label85: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction26].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction27___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1924, 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, 1933); 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, 1935); 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, 1944); 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, 1956, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction27].i]) return;
-  return_label87: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction27].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction28___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1960, 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, 1968); 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, 1970); 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, 1989, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction28].i]) return;
-  return_label89: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction28].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction29___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1993, 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, 2002); 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, 2004); 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, 2006); 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, 2025, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction29].i]) return;
-  return_label91: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction29].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction30___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2029, 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, 2038); 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, 2047); 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, 2049); 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, 2068, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction30].i]) return;
-  return_label93: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction30].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction31___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2072, 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, 2082); 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, 2084); 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, 2093); 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, 2095); 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, 2114, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction31].i]) return;
-  return_label95: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction31].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction32___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2118, 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, 2128); 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, 2136); 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, 2151, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction32].i]) return;
-  return_label97: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction32].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction33___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2155, 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, 2166); 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, 2168); 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, 2183); 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, 2198, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction33].i]) return;
-  return_label99: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction33].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction34___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2202, 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, 2212); 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, 2215); 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, 2223); 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, 2238, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction34].i]) return;
-  return_label101: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction34].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction35___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2242, 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, 2253); 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, 2256); 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, 2258); 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, 2273); 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, 2288, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction35].i]) return;
-  return_label103: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction35].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction36___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2292, 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, 2302); 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, 2312); 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, 2320); 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, 2335, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction36].i]) return;
-  return_label105: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction36].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction37___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2339, 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, 2350); 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, 2360); 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, 2362); 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, 2377); 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, 2392, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction37].i]) return;
-  return_label107: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction37].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction38___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2396, 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, 2407); 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, 2409); 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, 2419); 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, 2427); 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, 2442, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction38].i]) return;
-  return_label109: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction38].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction39___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2446, 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, 2458); 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, 2460); 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, 2470); 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, 2472); 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, 2487); 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, 2502, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction39].i]) return;
-  return_label111: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction39].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction40___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2506, 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, 2516); 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, 2519); 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, 2527); 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, 2549, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction40].i]) return;
-  return_label113: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction40].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction41___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2553, 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, 2564); 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, 2567); 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, 2569); 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, 2584); 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, 2606, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction41].i]) return;
-  return_label115: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction41].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction42___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2610, 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, 2621); 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, 2623); 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, 2626); 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, 2634); 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, 2656, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction42].i]) return;
-  return_label117: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction42].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction43___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2660, 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, 2672); 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, 2674); 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, 2677); 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, 2679); 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, 2694); 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, 2716, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction43].i]) return;
-  return_label119: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction43].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction44___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2720, 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, 2731); 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, 2740); 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, 2743); 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, 2751); 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, 2773, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction44].i]) return;
-  return_label121: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction44].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction45___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2777, 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, 2789); 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, 2798); 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, 2801); 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, 2803); 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, 2818); 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, 2840, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction45].i]) return;
-  return_label123: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction45].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction46___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2844, 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, 2856); 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, 2858); 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, 2867); 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, 2870); 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, 2878); 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, 2900, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction46].i]) return;
-  return_label125: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction46].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction47___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2904, 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, 2917); 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, 2919); 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, 2928); 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, 2931); 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, 2933); 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, 2948); 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, 2970, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction47].i]) return;
-  return_label127: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction47].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction48___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2974, 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, 2983); 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, 2985); 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, 2987); 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, 2996, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction48].i]) return;
-  return_label129: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction48].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction49___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3000, 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, 3010); 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, 3012); 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, 3014); 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, 3023, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction49].i]) return;
-  return_label131: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction49].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction50___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3027, 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, 3037); 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, 3039); 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, 3041); 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, 3050, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction50].i]) return;
-  return_label133: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction50].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction51___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3054, 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, 3060); 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, 3070, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction51].i]) return;
-  return_label135: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction51].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction52___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3074, 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, 3081, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction52].i]) return;
-  return_label137: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction52].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction53___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3085, 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, 3093); 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, 3107, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction53].i]) return;
-  return_label139: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction53].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction54___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3111, 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, 3120); 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, 3122); 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, 3143, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction54].i]) return;
-  return_label141: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction54].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction55___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3147, 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, 3161); 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, 3163); 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, 3165); 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, 3167); 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, 3181, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction55].i]) return;
-  return_label143: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction55].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction56___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3185, 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, 3200); 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, 3202); 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, 3204); 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, 3206); 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, 3208); 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, 3222, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction56].i]) return;
-  return_label145: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction56].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction57___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3226, 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, 3241); 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, 3243); 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, 3245); 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, 3247); 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, 3249); 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, 3270, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction57].i]) return;
-  return_label147: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction57].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction58___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3274, 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, 3290); 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, 3292); 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, 3294); 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, 3296); 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, 3298); 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, 3300); 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, 3321, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction58].i]) return;
-  return_label149: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction58].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction59___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3325, 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, 3340); 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, 3342); 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, 3344); 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, 3346); 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, 3348); 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, 3369, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction59].i]) return;
-  return_label151: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction59].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction60___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3373, 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, 3389); 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, 3391); 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, 3393); 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, 3395); 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, 3397); 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, 3399); 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, 3420, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction60].i]) return;
-  return_label153: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction60].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction61___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3424, 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, 3440); 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, 3442); 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, 3444); 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, 3446); 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, 3448); 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, 3457); 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, 3478, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction61].i]) return;
-  return_label155: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction61].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction62___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3482, 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, 3499); 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, 3501); 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, 3503); 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, 3505); 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, 3507); 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, 3509); 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, 3518); 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, 3539, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction62].i]) return;
-  return_label157: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction62].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction63___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3543, 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, 3559); 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, 3561); 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, 3563); 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, 3565); 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, 3567); 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, 3584, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction63].i]) return;
-  return_label159: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction63].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction64___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3588, 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, 3605); 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, 3607); 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, 3609); 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, 3611); 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, 3613); 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, 3615); 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, 3639, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction64].i]) return;
-  return_label161: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction64].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction65___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3643, 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, 3660); 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, 3662); 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, 3664); 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, 3666); 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, 3668); 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, 3670); 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, 3687, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction65].i]) return;
-  return_label163: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction65].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction66___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3691, 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, 3709); 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, 3711); 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, 3713); 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, 3715); 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, 3717); 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, 3719); 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, 3721); 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, 3745, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction66].i]) return;
-  return_label165: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction66].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction67___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3749, 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, 3766); 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, 3768); 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, 3770); 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, 3772); 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, 3774); 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, 3783); 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, 3800, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction67].i]) return;
-  return_label167: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction67].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction68___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3804, 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, 3822); 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, 3824); 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, 3826); 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, 3828); 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, 3830); 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, 3839); 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, 3841); 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, 3865, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction68].i]) return;
-  return_label169: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction68].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction69___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3869, 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, 3887); 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, 3889); 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, 3891); 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, 3893); 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, 3895); 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, 3897); 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, 3906); 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, 3923, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction69].i]) return;
-  return_label171: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction69].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction70___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3927, 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, 3946); 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, 3948); 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, 3950); 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, 3952); 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, 3954); 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, 3956); 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, 3965); 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, 3967); 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, 3991, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction70].i]) return;
-  return_label173: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction70].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction71___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3995, 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, 4012); 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, 4014); 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, 4016); 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, 4018); 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, 4020); 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, 4029); 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, 4046, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction71].i]) return;
-  return_label175: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction71].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction72___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4050, 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, 4068); 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, 4070); 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, 4072); 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, 4074); 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, 4076); 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, 4085); 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, 4087); 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, 4111, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction72].i]) return;
-  return_label177: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction72].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction73___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4115, 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, 4133); 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, 4135); 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, 4137); 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, 4139); 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, 4141); 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, 4143); 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, 4152); 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, 4169, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction73].i]) return;
-  return_label179: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction73].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction74___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4173, 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, 4192); 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, 4194); 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, 4196); 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, 4198); 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, 4200); 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, 4202); 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, 4211); 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, 4213); 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, 4237, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction74].i]) return;
-  return_label181: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction74].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction75___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4241, 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, 4259); 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, 4261); 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, 4263); 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, 4265); 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, 4267); 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, 4276); 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, 4285); 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, 4302, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction75].i]) return;
-  return_label183: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction75].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction76___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4306, 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, 4325); 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, 4327); 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, 4329); 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, 4331); 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, 4333); 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, 4342); 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, 4351); 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, 4353); 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, 4377, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction76].i]) return;
-  return_label185: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction76].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction77___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4381, 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, 4400); 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, 4402); 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, 4404); 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, 4406); 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, 4408); 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, 4410); 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, 4419); 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, 4428); 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, 4445, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction77].i]) return;
-  return_label187: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction77].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction78___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4449, 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, 4469); 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, 4471); 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, 4473); 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, 4475); 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, 4477); 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, 4479); 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, 4488); 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, 4497); 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, 4499); 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, 4523, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction78].i]) return;
-  return_label189: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction78].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction79___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4527, 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, 4532); 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, 4539, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction79].i]) return;
-  return_label191: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction79].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction80___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4543, 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, 4549); 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, 4551); 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, 4559, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction80].i]) return;
-  return_label193: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction80].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction81___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4563, 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, 4568); 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, 4575, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction81].i]) return;
-  return_label195: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction81].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction82___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4579, 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, 4584); 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, 4591, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction82].i]) return;
-  return_label197: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction82].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction83___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4595, 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, 4605); 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, 4612, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction83].i]) return;
-  return_label199: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction83].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction84___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4616, 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, 4627); 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, 4629); 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, 4643, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction84].i]) return;
-  return_label201: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction84].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction85___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4647, 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, 4654); 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, 4658, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction85].i]) return;
-  return_label203: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction85].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction86___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4662, 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, 4667); 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, 4675, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction86].i]) return;
-  return_label205: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction86].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction87___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4679, 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, 4685); 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, 4687); 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, 4695, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction87].i]) return;
-  return_label207: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction87].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction88___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4699, 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, 4707); 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, 4709); 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, 4717, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction88].i]) return;
-  return_label209: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction88].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction89___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4721, 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, 4727); 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, 4731, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction89].i]) return;
-  return_label211: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction89].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction90___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4735, 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, 4745); 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, 4747); 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, 4753); 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, 4759); 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, 4761); 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, 4763); 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, 4778, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction90].i]) return;
-  return_label213: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction90].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction91___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4782, 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, 4793); 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, 4795); 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, 4801); 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, 4803); 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, 4809); 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, 4811); 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, 4813); 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, 4828, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction91].i]) return;
-  return_label215: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction91].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction92___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4832, 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, 4841); 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, 4843); 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, 4849); 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, 4851); 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, 4853); 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, 4868, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction92].i]) return;
-  return_label217: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction92].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction93___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4872, 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, 4883); 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, 4885); 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, 4887); 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, 4893); 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, 4899); 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, 4901); 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, 4903); 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, 4918, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction93].i]) return;
-  return_label219: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction93].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction94___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4922, 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, 4934); 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, 4936); 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, 4938); 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, 4944); 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, 4946); 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, 4952); 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, 4954); 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, 4956); 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, 4971, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction94].i]) return;
-  return_label221: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction94].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction95___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4975, 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, 4985); 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, 4987); 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, 4989); 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, 4995); 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, 4997); 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, 4999); 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, 5014, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction95].i]) return;
-  return_label223: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction95].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction96___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5018, 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, 5027); 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, 5029); 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, 5035); 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, 5037); 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, 5039); 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, 5054, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction96].i]) return;
-  return_label225: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction96].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction97___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5058, 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, 5068); 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, 5070); 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, 5072); 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, 5078); 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, 5080); 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, 5082); 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, 5097, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction97].i]) return;
-  return_label227: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction97].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction98___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5101, 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, 5109); 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, 5111); 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, 5113); 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, 5115); 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, 5130, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction98].i]) return;
-  return_label229: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction98].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction99___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5134, 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, 5145); 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, 5147); 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, 5153); 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, 5159); 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, 5161); 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, 5163); 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, 5165); 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, 5180, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction99].i]) return;
-  return_label231: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction99].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction100___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5184, 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, 5196); 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, 5198); 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, 5204); 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, 5206); 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, 5212); 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, 5214); 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, 5216); 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, 5218); 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, 5233, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction100].i]) return;
-  return_label233: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction100].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction101___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5237, 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, 5247); 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, 5249); 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, 5255); 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, 5257); 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, 5259); 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, 5261); 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, 5276, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction101].i]) return;
-  return_label235: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction101].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction102___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5280, 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, 5292); 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, 5294); 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, 5296); 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, 5302); 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, 5308); 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, 5310); 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, 5312); 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, 5314); 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, 5329, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction102].i]) return;
-  return_label237: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction102].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction103___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5333, 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, 5346); 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, 5348); 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, 5350); 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, 5356); 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, 5358); 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, 5364); 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, 5366); 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, 5368); 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, 5370); 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, 5385, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction103].i]) return;
-  return_label239: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction103].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction104___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5389, 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, 5400); 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, 5402); 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, 5404); 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, 5410); 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, 5412); 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, 5414); 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, 5416); 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, 5431, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction104].i]) return;
-  return_label241: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction104].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction105___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5435, 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, 5445); 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, 5447); 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, 5453); 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, 5455); 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, 5457); 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, 5459); 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, 5474, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction105].i]) return;
-  return_label243: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction105].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction106___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5478, 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, 5489); 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, 5491); 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, 5493); 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, 5499); 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, 5501); 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, 5503); 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, 5505); 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, 5520, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction106].i]) return;
-  return_label245: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction106].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction107___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5524, 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, 5533); 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, 5535); 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, 5537); 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, 5539); 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, 5541); 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, 5556, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction107].i]) return;
-  return_label247: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction107].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction108___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5560, 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, 5571); 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, 5573); 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, 5579); 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, 5585); 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, 5587); 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, 5589); 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, 5591); 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, 5606, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction108].i]) return;
-  return_label249: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction108].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction109___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5610, 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, 5622); 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, 5624); 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, 5630); 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, 5632); 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, 5638); 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, 5640); 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, 5642); 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, 5644); 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, 5659, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction109].i]) return;
-  return_label251: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction109].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction110___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5663, 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, 5673); 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, 5675); 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, 5681); 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, 5683); 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, 5685); 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, 5687); 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, 5702, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction110].i]) return;
-  return_label253: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction110].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction111___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5706, 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, 5718); 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, 5720); 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, 5722); 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, 5728); 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, 5734); 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, 5736); 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, 5738); 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, 5740); 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, 5755, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction111].i]) return;
-  return_label255: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction111].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction112___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5759, 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, 5772); 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, 5774); 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, 5776); 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, 5782); 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, 5784); 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, 5790); 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, 5792); 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, 5794); 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, 5796); 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, 5811, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction112].i]) return;
-  return_label257: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction112].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction113___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5815, 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, 5826); 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, 5828); 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, 5830); 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, 5836); 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, 5838); 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, 5840); 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, 5842); 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, 5857, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction113].i]) return;
-  return_label259: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction113].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction114___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5861, 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, 5871); 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, 5873); 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, 5879); 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, 5881); 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, 5883); 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, 5885); 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, 5900, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction114].i]) return;
-  return_label261: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction114].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction115___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5904, 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, 5915); 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, 5917); 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, 5919); 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, 5925); 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, 5927); 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, 5929); 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, 5931); 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, 5946, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction115].i]) return;
-  return_label263: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction115].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction116___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5950, 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, 5959); 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, 5961); 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, 5963); 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, 5965); 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, 5967); 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, 5982, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction116].i]) return;
-  return_label265: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction116].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction117___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5986, 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, 5998); 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, 6000); 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, 6006); 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, 6012); 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, 6014); 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, 6016); 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, 6018); 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, 6020); 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, 6035, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction117].i]) return;
-  return_label267: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction117].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction118___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6039, 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, 6052); 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, 6054); 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, 6060); 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, 6062); 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, 6068); 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, 6070); 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, 6072); 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, 6074); 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, 6076); 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, 6091, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction118].i]) return;
-  return_label269: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction118].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction119___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6095, 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, 6106); 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, 6108); 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, 6114); 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, 6116); 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, 6118); 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, 6120); 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, 6122); 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, 6137, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction119].i]) return;
-  return_label271: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction119].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction120___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6141, 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, 6154); 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, 6156); 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, 6158); 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, 6164); 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, 6170); 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, 6172); 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, 6174); 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, 6176); 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, 6178); 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, 6193, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction120].i]) return;
-  return_label273: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction120].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction121___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6197, 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, 6211); 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, 6213); 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, 6215); 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, 6221); 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, 6223); 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, 6229); 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, 6231); 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, 6233); 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, 6235); 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, 6237); 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, 6252, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction121].i]) return;
-  return_label275: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction121].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction122___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6256, 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, 6268); 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, 6270); 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, 6272); 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, 6278); 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, 6280); 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, 6282); 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, 6284); 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, 6286); 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, 6301, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction122].i]) return;
-  return_label277: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction122].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction123___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6305, 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, 6316); 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, 6318); 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, 6324); 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, 6326); 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, 6328); 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, 6330); 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, 6332); 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, 6347, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction123].i]) return;
-  return_label279: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction123].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction124___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6351, 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, 6363); 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, 6365); 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, 6367); 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, 6373); 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, 6375); 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, 6377); 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, 6379); 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, 6381); 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, 6396, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction124].i]) return;
-  return_label281: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction124].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction125___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6400, 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, 6410); 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, 6412); 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, 6414); 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, 6416); 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, 6418); 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, 6420); 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, 6435, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction125].i]) return;
-  return_label283: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction125].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction126___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6439, 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, 6452); 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, 6454); 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, 6460); 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, 6466); 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, 6468); 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, 6470); 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, 6472); 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, 6487, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction126].i]) return;
-  return_label285: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction126].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction127___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6491, 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, 6505); 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, 6507); 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, 6513); 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, 6515); 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, 6521); 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, 6523); 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, 6525); 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, 6527); 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, 6542, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction127].i]) return;
-  return_label287: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction127].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction128___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6546, 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, 6558); 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, 6560); 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, 6566); 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, 6568); 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, 6570); 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, 6572); 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, 6587, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction128].i]) return;
-  return_label289: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction128].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction129___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6591, 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, 6605); 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, 6607); 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, 6609); 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, 6615); 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, 6621); 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, 6623); 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, 6625); 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, 6627); 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, 6642, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction129].i]) return;
-  return_label291: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction129].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction130___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6646, 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, 6661); 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, 6663); 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, 6665); 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, 6671); 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, 6673); 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, 6679); 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, 6681); 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, 6683); 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, 6685); 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, 6700, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction130].i]) return;
-  return_label293: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction130].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction131___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6704, 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, 6717); 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, 6719); 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, 6721); 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, 6727); 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, 6729); 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, 6731); 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, 6733); 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, 6748, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction131].i]) return;
-  return_label295: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction131].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction132___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6752, 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, 6764); 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, 6766); 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, 6772); 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, 6774); 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, 6776); 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, 6778); 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, 6793, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction132].i]) return;
-  return_label297: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction132].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction133___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6797, 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, 6810); 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, 6812); 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, 6814); 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, 6820); 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, 6822); 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, 6824); 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, 6826); 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, 6841, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction133].i]) return;
-  return_label299: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction133].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction134___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6845, 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, 6856); 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, 6858); 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, 6860); 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, 6862); 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, 6864); 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, 6879, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction134].i]) return;
-  return_label301: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction134].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction135___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6883, 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, 6897); 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, 6899); 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, 6905); 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, 6911); 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, 6913); 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, 6915); 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, 6917); 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, 6919); 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, 6934, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction135].i]) return;
-  return_label303: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction135].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction136___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6938, 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, 6953); 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, 6955); 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, 6961); 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, 6963); 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, 6969); 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, 6971); 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, 6973); 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, 6975); 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, 6977); 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, 6992, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction136].i]) return;
-  return_label305: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction136].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction137___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6996, 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, 7009); 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, 7011); 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, 7017); 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, 7019); 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, 7021); 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, 7023); 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, 7025); 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, 7040, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction137].i]) return;
-  return_label307: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction137].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction138___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7044, 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, 7059); 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, 7061); 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, 7063); 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, 7069); 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, 7075); 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, 7077); 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, 7079); 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, 7081); 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, 7083); 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, 7098, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction138].i]) return;
-  return_label309: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction138].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction139___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7102, 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, 7118); 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, 7120); 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, 7122); 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, 7128); 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, 7130); 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, 7136); 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, 7138); 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, 7140); 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, 7142); 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, 7144); 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, 7159, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction139].i]) return;
-  return_label311: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction139].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction140___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7163, 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, 7177); 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, 7179); 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, 7181); 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, 7187); 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, 7189); 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, 7191); 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, 7193); 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, 7195); 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, 7210, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction140].i]) return;
-  return_label313: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction140].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction141___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7214, 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, 7227); 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, 7229); 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, 7235); 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, 7237); 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, 7239); 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, 7241); 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, 7243); 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, 7258, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction141].i]) return;
-  return_label315: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction141].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction142___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7262, 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, 7276); 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, 7278); 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, 7280); 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, 7286); 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, 7288); 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, 7290); 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, 7292); 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, 7294); 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, 7309, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction142].i]) return;
-  return_label317: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction142].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction143___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7313, 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, 7325); 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, 7327); 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, 7329); 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, 7331); 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, 7333); 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, 7335); 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, 7350, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction143].i]) return;
-  return_label319: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction143].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction144___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7354, 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, 7368); 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, 7370); 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, 7376); 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, 7382); 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, 7384); 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, 7386); 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, 7388); 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, 7390); 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, 7405, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction144].i]) return;
-  return_label321: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction144].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction145___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7409, 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, 7424); 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, 7426); 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, 7432); 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, 7434); 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, 7440); 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, 7442); 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, 7444); 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, 7446); 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, 7448); 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, 7463, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction145].i]) return;
-  return_label323: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction145].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction146___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7467, 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, 7480); 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, 7482); 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, 7488); 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, 7490); 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, 7492); 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, 7494); 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, 7496); 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, 7511, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction146].i]) return;
-  return_label325: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction146].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction147___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7515, 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, 7530); 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, 7532); 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, 7534); 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, 7540); 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, 7546); 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, 7548); 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, 7550); 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, 7552); 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, 7554); 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, 7569, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction147].i]) return;
-  return_label327: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction147].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction148___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7573, 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, 7589); 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, 7591); 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, 7593); 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, 7599); 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, 7601); 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, 7607); 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, 7609); 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, 7611); 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, 7613); 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, 7615); 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, 7630, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction148].i]) return;
-  return_label329: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction148].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction149___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7634, 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, 7648); 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, 7650); 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, 7652); 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, 7658); 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, 7660); 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, 7662); 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, 7664); 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, 7666); 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, 7681, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction149].i]) return;
-  return_label331: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction149].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction150___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7685, 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, 7698); 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, 7700); 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, 7706); 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, 7708); 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, 7710); 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, 7712); 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, 7714); 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, 7729, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction150].i]) return;
-  return_label333: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction150].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction151___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7733, 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, 7747); 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, 7749); 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, 7751); 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, 7757); 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, 7759); 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, 7761); 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, 7763); 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, 7765); 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, 7780, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction151].i]) return;
-  return_label335: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction151].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction152___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7784, 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, 7796); 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, 7798); 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, 7800); 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, 7802); 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, 7804); 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, 7806); 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, 7821, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction152].i]) return;
-  return_label337: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction152].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction153___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7825, 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, 7840); 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, 7842); 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, 7848); 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, 7854); 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, 7856); 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, 7858); 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, 7860); 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, 7862); 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, 7864); 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, 7879, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction153].i]) return;
-  return_label339: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction153].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction154___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7883, 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, 7899); 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, 7901); 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, 7907); 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, 7909); 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, 7915); 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, 7917); 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, 7919); 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, 7921); 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, 7923); 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, 7925); 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, 7940, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction154].i]) return;
-  return_label341: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction154].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction155___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7944, 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, 7958); 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, 7960); 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, 7966); 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, 7968); 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, 7970); 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, 7972); 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, 7974); 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, 7976); 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, 7991, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction155].i]) return;
-  return_label343: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction155].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction156___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7995, 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, 8011); 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, 8013); 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, 8015); 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, 8021); 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, 8027); 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, 8029); 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, 8031); 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, 8033); 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, 8035); 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, 8037); 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, 8052, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction156].i]) return;
-  return_label345: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction156].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction157___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8056, 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, 8073); 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, 8075); 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, 8077); 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, 8083); 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, 8085); 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, 8091); 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, 8093); 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, 8095); 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, 8097); 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, 8099); 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, 8101); 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, 8116, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction157].i]) return;
-  return_label347: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction157].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction158___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8120, 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, 8135); 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, 8137); 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, 8139); 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, 8145); 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, 8147); 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, 8149); 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, 8151); 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, 8153); 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, 8155); 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, 8170, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction158].i]) return;
-  return_label349: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction158].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction159___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8174, 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, 8188); 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, 8190); 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, 8196); 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, 8198); 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, 8200); 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, 8202); 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, 8204); 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, 8206); 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, 8221, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction159].i]) return;
-  return_label351: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction159].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction160___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8225, 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, 8240); 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, 8242); 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, 8244); 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, 8250); 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, 8252); 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, 8254); 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, 8256); 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, 8258); 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, 8260); 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, 8275, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction160].i]) return;
-  return_label353: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction160].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction161___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8279, 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, 8292); 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, 8294); 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, 8296); 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, 8298); 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, 8300); 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, 8302); 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, 8304); 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, 8319, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction161].i]) return;
-  return_label355: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction161].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction162___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8323, LOCATE_parser___ReduceAction162___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___ReduceAction162___action, LOCATE_parser, 8334); 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___ReduceAction162___action, LOCATE_parser, 8336); 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___ReduceAction162___action, LOCATE_parser, 8338); 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___ReduceAction162___action, LOCATE_parser, 8340); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8342); nit_exit(1);}
-  variable[17] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  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_label356: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction162___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8354, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction162].i]) return;
-  return_label357: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction162].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction163___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8358, LOCATE_parser___ReduceAction163___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___ReduceAction163___action, LOCATE_parser, 8370); 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___ReduceAction163___action, LOCATE_parser, 8372); 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___ReduceAction163___action, LOCATE_parser, 8374); 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___ReduceAction163___action, LOCATE_parser, 8376); 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___ReduceAction163___action, LOCATE_parser, 8378); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8380); nit_exit(1);}
-  variable[19] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label358: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction163___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8392, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction163].i]) return;
-  return_label359: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction163].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction164___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8396, LOCATE_parser___ReduceAction164___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___ReduceAction164___action, LOCATE_parser, 8407); 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, 8409); 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, 8411); 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, 8413); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8415); nit_exit(1);}
-  variable[17] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  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_label360: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction164___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8427, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction164].i]) return;
-  return_label361: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction164].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction165___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8431, LOCATE_parser___ReduceAction165___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___ReduceAction165___action, LOCATE_parser, 8443); 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___ReduceAction165___action, LOCATE_parser, 8445); 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___ReduceAction165___action, LOCATE_parser, 8447); 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___ReduceAction165___action, LOCATE_parser, 8449); 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___ReduceAction165___action, LOCATE_parser, 8451); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8453); nit_exit(1);}
-  variable[19] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/); /*new AInternMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label362: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction165___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8465, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction165].i]) return;
-  return_label363: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction165].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction166___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8469, LOCATE_parser___ReduceAction166___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___ReduceAction166___action, LOCATE_parser, 8480); 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, 8482); 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, 8484); 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, 8486); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8488); nit_exit(1);}
-  variable[17] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  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_label364: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction166___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8501, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction166].i]) return;
-  return_label365: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction166].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction167___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8505, LOCATE_parser___ReduceAction167___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___ReduceAction167___action, LOCATE_parser, 8517); 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___ReduceAction167___action, LOCATE_parser, 8519); 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___ReduceAction167___action, LOCATE_parser, 8521); 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___ReduceAction167___action, LOCATE_parser, 8523); 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___ReduceAction167___action, LOCATE_parser, 8525); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8527); nit_exit(1);}
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label366: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction167___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8540, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction167].i]) return;
-  return_label367: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction167].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction168___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8544, LOCATE_parser___ReduceAction168___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___ReduceAction168___action, LOCATE_parser, 8556); 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, 8558); 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, 8560); 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, 8562); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8564); nit_exit(1);}
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  variable[18] = TAG_Bool(( variable[17] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8566); nit_exit(1);}
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*tstringnode8*/); /*new AExternMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label368: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction168___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8579, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction168].i]) return;
-  return_label369: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction168].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction169___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8583, LOCATE_parser___ReduceAction169___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___ReduceAction169___action, LOCATE_parser, 8596); 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___ReduceAction169___action, LOCATE_parser, 8598); 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___ReduceAction169___action, LOCATE_parser, 8600); 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___ReduceAction169___action, LOCATE_parser, 8602); 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___ReduceAction169___action, LOCATE_parser, 8604); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8606); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  variable[20] = TAG_Bool(( variable[19] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8608); nit_exit(1);}
-  variable[21] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*tstringnode8*/); /*new AExternMethPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  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_label370: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction169___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8621, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction169].i]) return;
-  return_label371: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction169].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction170___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8625, LOCATE_parser___ReduceAction170___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[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, 8636); 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___ReduceAction170___action, LOCATE_parser, 8638); 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___ReduceAction170___action, LOCATE_parser, 8640); 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___ReduceAction170___action, LOCATE_parser, 8642); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8644); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8646); nit_exit(1);}
-  variable[18] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteMethPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  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_label372: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction170___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8659, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction170].i]) return;
-  return_label373: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction170].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction171___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8663, LOCATE_parser___ReduceAction171___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___ReduceAction171___action, LOCATE_parser, 8675); 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, 8677); 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, 8679); 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, 8681); 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, 8683); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8685); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8687); nit_exit(1);}
-  variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/); /*new AConcreteMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  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_label374: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction171___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8700, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction171].i]) return;
-  return_label375: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction171].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction172___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8704, LOCATE_parser___ReduceAction172___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___ReduceAction172___action, LOCATE_parser, 8716); 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___ReduceAction172___action, LOCATE_parser, 8718); 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___ReduceAction172___action, LOCATE_parser, 8720); 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___ReduceAction172___action, LOCATE_parser, 8722); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8724); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8726); nit_exit(1);}
-  variable[19] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/); /*new AConcreteMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label376: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction172___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8739, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction172].i]) return;
-  return_label377: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction172].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction173___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8743, LOCATE_parser___ReduceAction173___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___ReduceAction173___action, LOCATE_parser, 8756); 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, 8758); 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, 8760); 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, 8762); 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, 8764); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8766); nit_exit(1);}
-  variable[19] =  variable[5] /*nodearraylist8*/;
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8768); nit_exit(1);}
-  variable[21] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/); /*new AConcreteMethPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  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_label378: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction173___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8781, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction173].i]) return;
-  return_label379: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction173].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction174___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8785, LOCATE_parser___ReduceAction174___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] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8795); 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___ReduceAction174___action, LOCATE_parser, 8797); 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___ReduceAction174___action, LOCATE_parser, 8799); nit_exit(1);}
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  variable[14] = TAG_Bool(( variable[13] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[13] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8801); nit_exit(1);}
-  variable[14] =  variable[4] /*nodearraylist6*/;
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8803); nit_exit(1);}
-  variable[16] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[13] /*psignaturenode7*/,  variable[14] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  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_label380: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction174___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8816, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction174].i]) return;
-  return_label381: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction174].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction175___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8820, LOCATE_parser___ReduceAction175___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[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___ReduceAction175___action, LOCATE_parser, 8831); 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___ReduceAction175___action, LOCATE_parser, 8833); 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___ReduceAction175___action, LOCATE_parser, 8835); 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___ReduceAction175___action, LOCATE_parser, 8837); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8839); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8841); nit_exit(1);}
-  variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  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_label382: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction175___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8854, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction175].i]) return;
-  return_label383: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction175].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction176___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8858, LOCATE_parser___ReduceAction176___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[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___ReduceAction176___action, LOCATE_parser, 8869); 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___ReduceAction176___action, LOCATE_parser, 8871); 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___ReduceAction176___action, LOCATE_parser, 8873); 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___ReduceAction176___action, LOCATE_parser, 8875); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8877); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8879); nit_exit(1);}
-  variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  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_label384: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction176___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8892, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction176].i]) return;
-  return_label385: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction176].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction177___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8896, LOCATE_parser___ReduceAction177___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___ReduceAction177___action, LOCATE_parser, 8908); 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___ReduceAction177___action, LOCATE_parser, 8910); 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___ReduceAction177___action, LOCATE_parser, 8912); 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___ReduceAction177___action, LOCATE_parser, 8914); 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___ReduceAction177___action, LOCATE_parser, 8916); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8918); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8920); nit_exit(1);}
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  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_label386: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction177___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8933, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction177].i]) return;
-  return_label387: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction177].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction178___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8937, LOCATE_parser___ReduceAction178___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___ReduceAction178___action, LOCATE_parser, 8948); 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___ReduceAction178___action, LOCATE_parser, 8950); 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___ReduceAction178___action, LOCATE_parser, 8952); nit_exit(1);}
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  variable[15] = TAG_Bool(( variable[14] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[14] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8954); nit_exit(1);}
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8956); nit_exit(1);}
-  variable[17] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[14] /*psignaturenode7*/,  variable[15] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  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_label388: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction178___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8969, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction178].i]) return;
-  return_label389: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction178].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction179___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8973, LOCATE_parser___ReduceAction179___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___ReduceAction179___action, LOCATE_parser, 8985); 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___ReduceAction179___action, LOCATE_parser, 8987); 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___ReduceAction179___action, LOCATE_parser, 8989); 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___ReduceAction179___action, LOCATE_parser, 8991); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8993); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8995); nit_exit(1);}
-  variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label390: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction179___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9008, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction179].i]) return;
-  return_label391: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction179].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction180___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9012, LOCATE_parser___ReduceAction180___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___ReduceAction180___action, LOCATE_parser, 9024); 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___ReduceAction180___action, LOCATE_parser, 9026); 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___ReduceAction180___action, LOCATE_parser, 9028); 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___ReduceAction180___action, LOCATE_parser, 9030); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9032); nit_exit(1);}
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9034); nit_exit(1);}
-  variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  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_label392: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction180___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9047, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction180].i]) return;
-  return_label393: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction180].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction181___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9051, LOCATE_parser___ReduceAction181___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___ReduceAction181___action, LOCATE_parser, 9064); 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___ReduceAction181___action, LOCATE_parser, 9066); 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___ReduceAction181___action, LOCATE_parser, 9068); 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___ReduceAction181___action, LOCATE_parser, 9070); 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___ReduceAction181___action, LOCATE_parser, 9072); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9074); nit_exit(1);}
-  variable[19] =  variable[5] /*nodearraylist8*/;
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9076); nit_exit(1);}
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/); /*new AConcreteInitPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  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_label394: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction181___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9089, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction181].i]) return;
-  return_label395: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction181].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction182___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9093, LOCATE_parser___ReduceAction182___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___ReduceAction182___action, LOCATE_parser, 9102); 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___ReduceAction182___action, LOCATE_parser, 9104); 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___ReduceAction182___action, LOCATE_parser, 9106); 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___ReduceAction182___action, LOCATE_parser, 9108); 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___ReduceAction182___action, LOCATE_parser, 9110); 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_label396: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction182___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9122, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction182].i]) return;
-  return_label397: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction182].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction183___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9126, LOCATE_parser___ReduceAction183___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___ReduceAction183___action, LOCATE_parser, 9136); 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___ReduceAction183___action, LOCATE_parser, 9138); 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___ReduceAction183___action, LOCATE_parser, 9140); 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___ReduceAction183___action, LOCATE_parser, 9142); 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___ReduceAction183___action, LOCATE_parser, 9144); 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___ReduceAction183___action, LOCATE_parser, 9146); 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_label398: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction183___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9158, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction183].i]) return;
-  return_label399: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction183].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction184___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9162, LOCATE_parser___ReduceAction184___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___ReduceAction184___action, LOCATE_parser, 9168); 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_label400: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction184___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9172, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction184].i]) return;
-  return_label401: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction184].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction185___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9176, LOCATE_parser___ReduceAction185___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___ReduceAction185___action, LOCATE_parser, 9187); 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___ReduceAction185___action, LOCATE_parser, 9189); 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___ReduceAction185___action, LOCATE_parser, 9191); 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___ReduceAction185___action, LOCATE_parser, 9193); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9195); nit_exit(1);}
-  variable[17] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((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[17],  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, 9208, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction185].i]) return;
-  return_label403: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction185].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction186___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9212, LOCATE_parser___ReduceAction186___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___ReduceAction186___action, LOCATE_parser, 9224); 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___ReduceAction186___action, LOCATE_parser, 9226); 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___ReduceAction186___action, LOCATE_parser, 9228); 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___ReduceAction186___action, LOCATE_parser, 9230); 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___ReduceAction186___action, LOCATE_parser, 9232); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9234); nit_exit(1);}
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((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[19],  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, 9247, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction186].i]) return;
-  return_label405: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction186].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction187___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9251, LOCATE_parser___ReduceAction187___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___ReduceAction187___action, LOCATE_parser, 9263); 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___ReduceAction187___action, LOCATE_parser, 9265); 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___ReduceAction187___action, LOCATE_parser, 9267); 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___ReduceAction187___action, LOCATE_parser, 9269); nit_exit(1);}
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9271); nit_exit(1);}
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  variable[18] = TAG_Bool(( variable[17] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9273); nit_exit(1);}
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*tstringnode8*/); /*new AExternMethPropdef*/
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((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[19],  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, 9286, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction187].i]) return;
-  return_label407: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction187].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction188___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9290, LOCATE_parser___ReduceAction188___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___ReduceAction188___action, LOCATE_parser, 9303); 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___ReduceAction188___action, LOCATE_parser, 9305); 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___ReduceAction188___action, LOCATE_parser, 9307); 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___ReduceAction188___action, LOCATE_parser, 9309); 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___ReduceAction188___action, LOCATE_parser, 9311); nit_exit(1);}
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9313); nit_exit(1);}
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  variable[20] = TAG_Bool(( variable[19] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9315); nit_exit(1);}
-  variable[21] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*tstringnode8*/); /*new AExternMethPropdef*/
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((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[21],  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, 9328, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction188].i]) return;
-  return_label409: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction188].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction189___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9332, LOCATE_parser___ReduceAction189___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[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___ReduceAction189___action, LOCATE_parser, 9343); 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___ReduceAction189___action, LOCATE_parser, 9345); 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___ReduceAction189___action, LOCATE_parser, 9347); 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___ReduceAction189___action, LOCATE_parser, 9349); nit_exit(1);}
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9351); nit_exit(1);}
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9353); nit_exit(1);}
-  variable[18] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteMethPropdef*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  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_label410: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction189___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9366, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction189].i]) return;
-  return_label411: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction189].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction190___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9370, LOCATE_parser___ReduceAction190___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___ReduceAction190___action, LOCATE_parser, 9382); 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, 9384); 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, 9386); 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, 9388); 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, 9390); nit_exit(1);}
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9392); nit_exit(1);}
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9394); nit_exit(1);}
-  variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/); /*new AConcreteMethPropdef*/
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  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_label412: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction190___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9407, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction190].i]) return;
-  return_label413: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction190].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction191___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9411, LOCATE_parser___ReduceAction191___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_label414: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction191___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9419, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction191].i]) return;
-  return_label415: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction191].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction192___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9423, LOCATE_parser___ReduceAction192___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___ReduceAction192___action, LOCATE_parser, 9429); 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_label416: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction192___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9436, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction192].i]) return;
-  return_label417: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction192].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction193___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9440, LOCATE_parser___ReduceAction193___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___ReduceAction193___action, LOCATE_parser, 9446); 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_label418: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction193___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9453, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction193].i]) return;
-  return_label419: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction193].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction194___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9457, LOCATE_parser___ReduceAction194___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___ReduceAction194___action, LOCATE_parser, 9463); 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_label420: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction194___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9470, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction194].i]) return;
-  return_label421: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction194].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction195___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9474, LOCATE_parser___ReduceAction195___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___ReduceAction195___action, LOCATE_parser, 9479); 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_label422: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction195___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9486, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction195].i]) return;
-  return_label423: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction195].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction196___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9490, LOCATE_parser___ReduceAction196___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___ReduceAction196___action, LOCATE_parser, 9495); 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_label424: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction196___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9502, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction196].i]) return;
-  return_label425: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction196].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction197___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9506, LOCATE_parser___ReduceAction197___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___ReduceAction197___action, LOCATE_parser, 9511); 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_label426: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction197___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9518, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction197].i]) return;
-  return_label427: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction197].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction198___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9522, LOCATE_parser___ReduceAction198___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___ReduceAction198___action, LOCATE_parser, 9527); 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_label428: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction198___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9534, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction198].i]) return;
-  return_label429: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction198].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction199___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9538, LOCATE_parser___ReduceAction199___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___ReduceAction199___action, LOCATE_parser, 9543); 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_label430: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction199___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9550, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction199].i]) return;
-  return_label431: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction199].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction200___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9554, LOCATE_parser___ReduceAction200___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___ReduceAction200___action, LOCATE_parser, 9559); 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_label432: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction200___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9566, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction200].i]) return;
-  return_label433: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction200].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction201___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9570, LOCATE_parser___ReduceAction201___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___ReduceAction201___action, LOCATE_parser, 9575); 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_label434: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction201___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9582, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction201].i]) return;
-  return_label435: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction201].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction202___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9586, LOCATE_parser___ReduceAction202___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___ReduceAction202___action, LOCATE_parser, 9591); 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_label436: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction202___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9598, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction202].i]) return;
-  return_label437: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction202].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction203___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9602, LOCATE_parser___ReduceAction203___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___ReduceAction203___action, LOCATE_parser, 9607); 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_label438: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction203___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9614, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction203].i]) return;
-  return_label439: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction203].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction204___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9618, LOCATE_parser___ReduceAction204___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___ReduceAction204___action, LOCATE_parser, 9623); 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_label440: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction204___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9630, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction204].i]) return;
-  return_label441: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction204].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction205___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9634, LOCATE_parser___ReduceAction205___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___ReduceAction205___action, LOCATE_parser, 9639); 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_label442: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction205___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9646, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction205].i]) return;
-  return_label443: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction205].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction206___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9650, LOCATE_parser___ReduceAction206___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___ReduceAction206___action, LOCATE_parser, 9655); 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_label444: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction206___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9662, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction206].i]) return;
-  return_label445: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction206].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction207___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9666, LOCATE_parser___ReduceAction207___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___ReduceAction207___action, LOCATE_parser, 9672); 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___ReduceAction207___action, LOCATE_parser, 9674); 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_label446: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction207___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9682, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction207].i]) return;
-  return_label447: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction207].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction208___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9686, LOCATE_parser___ReduceAction208___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___ReduceAction208___action, LOCATE_parser, 9691); 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_label448: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction208___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9698, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction208].i]) return;
-  return_label449: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction208].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction209___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9702, LOCATE_parser___ReduceAction209___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___ReduceAction209___action, LOCATE_parser, 9708); 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___ReduceAction209___action, LOCATE_parser, 9710); 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_label450: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction209___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9718, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction209].i]) return;
-  return_label451: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction209].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction210___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9722, LOCATE_parser___ReduceAction210___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___ReduceAction210___action, LOCATE_parser, 9729); 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___ReduceAction210___action, LOCATE_parser, 9731); 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___ReduceAction210___action, LOCATE_parser, 9733); 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_label452: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction210___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9742, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction210].i]) return;
-  return_label453: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction210].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction211___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9746, LOCATE_parser___ReduceAction211___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___ReduceAction211___action, LOCATE_parser, 9753); 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_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  NIT_NULL /*null*/,  variable[6] /*listnode5*/); /*new ASignature*/
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  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_label454: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction211___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9769, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction211].i]) return;
-  return_label455: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction211].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction212___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9773, LOCATE_parser___ReduceAction212___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___ReduceAction212___action, LOCATE_parser, 9781); 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] /*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___ReduceAction212___action, LOCATE_parser, 9790); 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_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  NIT_NULL /*null*/,  variable[7] /*listnode6*/); /*new ASignature*/
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  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_label456: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction212___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9806, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction212].i]) return;
-  return_label457: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction212].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction213___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9810, LOCATE_parser___ReduceAction213___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] /*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___ReduceAction213___action, LOCATE_parser, 9818); 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___ReduceAction213___action, LOCATE_parser, 9820); 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_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode2*/,  variable[8] /*ptypenode3*/,  variable[7] /*listnode5*/); /*new ASignature*/
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  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_label458: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction213___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9836, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction213].i]) return;
-  return_label459: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction213].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction214___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9840, LOCATE_parser___ReduceAction214___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] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 9849); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 9858); nit_exit(1);}
-  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___ReduceAction214___action, LOCATE_parser, 9860); 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_ASignature_parser_prod___ASignature___init_asignature( variable[7] /*listnode3*/,  variable[10] /*ptypenode4*/,  variable[8] /*listnode6*/); /*new ASignature*/
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*psignaturenode1*/ /*node_list=*/;
-  variable[13] = ((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[13],  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, 9876, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction214].i]) return;
-  return_label461: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction214].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction215___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9880, LOCATE_parser___ReduceAction215___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[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  NIT_NULL /*null*/,  variable[6] /*listnode4*/); /*new ASignature*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*psignaturenode1*/ /*node_list=*/;
-  variable[8] = ((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[8],  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, 9894, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction215].i]) return;
-  return_label463: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction215].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction216___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9898, LOCATE_parser___ReduceAction216___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[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___ReduceAction216___action, LOCATE_parser, 9906); 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[10] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  NIT_NULL /*null*/,  variable[7] /*listnode5*/); /*new ASignature*/
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*psignaturenode1*/ /*node_list=*/;
-  variable[10] = ((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[10],  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, 9922, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction216].i]) return;
-  return_label465: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction216].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction217___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9926, LOCATE_parser___ReduceAction217___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[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[7] = variable[8];
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  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___ReduceAction217___action, LOCATE_parser, 9934); nit_exit(1);}
-  variable[10] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode2*/,  variable[8] /*ptypenode3*/,  variable[7] /*listnode4*/); /*new ASignature*/
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*psignaturenode1*/ /*node_list=*/;
-  variable[10] = ((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[10],  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, 9943, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction217].i]) return;
-  return_label467: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction217].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction218___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9947, LOCATE_parser___ReduceAction218___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[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[8] = variable[9];
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  variable[10] = TAG_Bool(( variable[9] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 9956); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode3*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 9965); nit_exit(1);}
-  variable[12] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[7] /*listnode3*/,  variable[10] /*ptypenode4*/,  variable[8] /*listnode5*/); /*new ASignature*/
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*psignaturenode1*/ /*node_list=*/;
-  variable[12] = ((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[12],  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, 9974, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction218].i]) return;
-  return_label469: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction218].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction219___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9978, LOCATE_parser___ReduceAction219___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(18)) /*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_label470: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction219___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9991, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction219].i]) return;
-  return_label471: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction219].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction220___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9995, LOCATE_parser___ReduceAction220___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___ReduceAction220___action, LOCATE_parser, 10002); 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(18)) /*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_label472: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction220___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10018, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction220].i]) return;
-  return_label473: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction220].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction221___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10022, LOCATE_parser___ReduceAction221___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___ReduceAction221___action, LOCATE_parser, 10029); 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(18)) /*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_label474: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction221___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10038, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction221].i]) return;
-  return_label475: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction221].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction222___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10042, LOCATE_parser___ReduceAction222___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___ReduceAction222___action, LOCATE_parser, 10050); 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___ReduceAction222___action, LOCATE_parser, 10059); 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(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_label476: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction222___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10068, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction222].i]) return;
-  return_label477: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction222].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction223___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10072, LOCATE_parser___ReduceAction223___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___ReduceAction223___action, LOCATE_parser, 10082); 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(19)) /*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_label478: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction223___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10089, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction223].i]) return;
-  return_label479: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction223].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction224___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10093, LOCATE_parser___ReduceAction224___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___ReduceAction224___action, LOCATE_parser, 10104); 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___ReduceAction224___action, LOCATE_parser, 10106); 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(19)) /*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_label480: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction224___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10120, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction224].i]) return;
-  return_label481: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction224].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction225___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10124, LOCATE_parser___ReduceAction225___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(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_label482: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction225___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10134, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction225].i]) return;
-  return_label483: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction225].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction226___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10138, LOCATE_parser___ReduceAction226___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___ReduceAction226___action, LOCATE_parser, 10145); 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(20)) /*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_label484: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction226___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10149, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction226].i]) return;
-  return_label485: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction226].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction227___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10153, LOCATE_parser___ReduceAction227___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___ReduceAction227___action, LOCATE_parser, 10158); 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(21)) /*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_label486: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction227___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10167, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction227].i]) return;
-  return_label487: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction227].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction228___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10171, LOCATE_parser___ReduceAction228___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___ReduceAction228___action, LOCATE_parser, 10177); 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___ReduceAction228___action, LOCATE_parser, 10179); 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(21)) /*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_label488: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction228___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10188, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction228].i]) return;
-  return_label489: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction228].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction229___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10192, LOCATE_parser___ReduceAction229___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___ReduceAction229___action, LOCATE_parser, 10199); 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___ReduceAction229___action, LOCATE_parser, 10201); 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___ReduceAction229___action, LOCATE_parser, 10203); 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(21)) /*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_label490: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction229___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10212, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction229].i]) return;
-  return_label491: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction229].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction230___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10216, LOCATE_parser___ReduceAction230___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] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  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___ReduceAction230___action, LOCATE_parser, 10223); nit_exit(1);}
-  variable[8] = 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[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode2*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode2*/) /*AbstractArray::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode2=*/;
-    } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode2*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode2*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode2*/ /*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_label492: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction230___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10234, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction230].i]) return;
-  return_label493: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction230].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction231___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10238, LOCATE_parser___ReduceAction231___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] /*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___ReduceAction231___action, LOCATE_parser, 10247); nit_exit(1);}
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  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___ReduceAction231___action, LOCATE_parser, 10249); nit_exit(1);}
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  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___ReduceAction231___action, LOCATE_parser, 10251); nit_exit(1);}
-  variable[13] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[9] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[10] /*tidnode4*/,  variable[11] /*psignaturenode5*/,  NIT_NULL /*null*/); /*new AClosureDecl*/
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[13] = ((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[13],  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, 10262, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction231].i]) return;
-  return_label495: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction231].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction232___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10266, LOCATE_parser___ReduceAction232___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] /*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___ReduceAction232___action, LOCATE_parser, 10276); nit_exit(1);}
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  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___ReduceAction232___action, LOCATE_parser, 10278); nit_exit(1);}
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  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___ReduceAction232___action, LOCATE_parser, 10280); nit_exit(1);}
-  variable[13] =  variable[5] /*nodearraylist5*/;
-  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___ReduceAction232___action, LOCATE_parser, 10282); nit_exit(1);}
-  variable[15] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[10] /*tkwwithnode2*/,  variable[11] /*tkwbreaknode3*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/,  NIT_NULL /*null*/); /*new AClosureDecl*/
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[15] = ((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[15],  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, 10293, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction232].i]) return;
-  return_label497: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction232].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction233___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10297, LOCATE_parser___ReduceAction233___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[11] =  variable[10] /*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___ReduceAction233___action, LOCATE_parser, 10308); nit_exit(1);}
-  variable[12] =  variable[8] /*nodearraylist3*/;
-  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___ReduceAction233___action, LOCATE_parser, 10310); nit_exit(1);}
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  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___ReduceAction233___action, LOCATE_parser, 10312); nit_exit(1);}
-  variable[14] =  variable[5] /*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___ReduceAction233___action, LOCATE_parser, 10314); nit_exit(1);}
-  variable[16] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[11] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/,  variable[14] /*pexprnode6*/); /*new AClosureDecl*/
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[16] = ((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[16],  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, 10325, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction233].i]) return;
-  return_label499: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction233].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction234___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10329, LOCATE_parser___ReduceAction234___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[12] =  variable[11] /*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___ReduceAction234___action, LOCATE_parser, 10341); nit_exit(1);}
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  variable[14] = TAG_Bool(( variable[13] /*tkwbreaknode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwbreaknode3*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 10343); nit_exit(1);}
-  variable[14] =  variable[8] /*nodearraylist4*/;
-  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___ReduceAction234___action, LOCATE_parser, 10345); nit_exit(1);}
-  variable[15] =  variable[7] /*nodearraylist5*/;
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode5*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 10347); nit_exit(1);}
-  variable[16] =  variable[5] /*nodearraylist7*/;
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 10349); nit_exit(1);}
-  variable[18] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[12] /*tkwwithnode2*/,  variable[13] /*tkwbreaknode3*/,  variable[14] /*tidnode4*/,  variable[15] /*psignaturenode5*/,  variable[16] /*pexprnode6*/); /*new AClosureDecl*/
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[18] = ((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[18],  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, 10360, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction234].i]) return;
-  return_label501: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction234].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction235___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10364, LOCATE_parser___ReduceAction235___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___ReduceAction235___action, LOCATE_parser, 10370); 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(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_label502: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction235___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10378, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction235].i]) return;
-  return_label503: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction235].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction236___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10382, LOCATE_parser___ReduceAction236___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___ReduceAction236___action, LOCATE_parser, 10393); 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___ReduceAction236___action, LOCATE_parser, 10395); 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(24)) /*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_label504: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction236___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10410, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction236].i]) return;
-  return_label505: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction236].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction237___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10414, LOCATE_parser___ReduceAction237___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___ReduceAction237___action, LOCATE_parser, 10420); 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(25)) /*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_label506: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction237___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10427, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction237].i]) return;
-  return_label507: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction237].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction238___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10431, LOCATE_parser___ReduceAction238___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___ReduceAction238___action, LOCATE_parser, 10438); 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___ReduceAction238___action, LOCATE_parser, 10440); 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(25)) /*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_label508: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction238___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10454, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction238].i]) return;
-  return_label509: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction238].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction239___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10458, LOCATE_parser___ReduceAction239___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___ReduceAction239___action, LOCATE_parser, 10465); 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(26)) /*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_label510: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction239___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10469, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction239].i]) return;
-  return_label511: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction239].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction240___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10473, LOCATE_parser___ReduceAction240___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___ReduceAction240___action, LOCATE_parser, 10480); 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(27)) /*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_label512: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction240___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10484, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction240].i]) return;
-  return_label513: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction240].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction241___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10488, LOCATE_parser___ReduceAction241___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___ReduceAction241___action, LOCATE_parser, 10493); 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_label514: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction241___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10497, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction241].i]) return;
-  return_label515: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction241].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction242___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10501, LOCATE_parser___ReduceAction242___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___ReduceAction242___action, LOCATE_parser, 10510); 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(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_label516: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction242___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10520, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction242].i]) return;
-  return_label517: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction242].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction243___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10524, LOCATE_parser___ReduceAction243___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___ReduceAction243___action, LOCATE_parser, 10534); 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___ReduceAction243___action, LOCATE_parser, 10536); 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(28)) /*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_label518: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction243___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10553, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction243].i]) return;
-  return_label519: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction243].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction244___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10557, LOCATE_parser___ReduceAction244___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] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[6] /*listnode2*/); /*new ABlockExpr*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((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[8],  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, 10569, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction244].i]) return;
-  return_label521: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction244].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction245___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10573, LOCATE_parser___ReduceAction245___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[7] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[5] /*listnode2*/); /*new ABlockExpr*/
-  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_label522: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction245___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10584, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction245].i]) return;
-  return_label523: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction245].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction246___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10588, LOCATE_parser___ReduceAction246___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___ReduceAction246___action, LOCATE_parser, 10594); 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(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_label524: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction246___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10598, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction246].i]) return;
-  return_label525: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction246].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction247___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10602, LOCATE_parser___ReduceAction247___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___ReduceAction247___action, LOCATE_parser, 10607); 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(30)) /*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_label526: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction247___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10611, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction247].i]) return;
-  return_label527: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction247].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction248___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10615, LOCATE_parser___ReduceAction248___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___ReduceAction248___action, LOCATE_parser, 10620); 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(30)) /*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_label528: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction248___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10624, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction248].i]) return;
-  return_label529: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction248].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction249___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10628, LOCATE_parser___ReduceAction249___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___ReduceAction249___action, LOCATE_parser, 10633); 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(30)) /*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_label530: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction249___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10641, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction249].i]) return;
-  return_label531: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction249].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction250___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10645, LOCATE_parser___ReduceAction250___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___ReduceAction250___action, LOCATE_parser, 10651); 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___ReduceAction250___action, LOCATE_parser, 10653); 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(30)) /*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_label532: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction250___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10661, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction250].i]) return;
-  return_label533: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction250].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction251___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10665, LOCATE_parser___ReduceAction251___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___ReduceAction251___action, LOCATE_parser, 10670); 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(30)) /*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_label534: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction251___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10678, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction251].i]) return;
-  return_label535: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction251].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction252___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10682, LOCATE_parser___ReduceAction252___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___ReduceAction252___action, LOCATE_parser, 10688); 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___ReduceAction252___action, LOCATE_parser, 10690); 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(30)) /*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_label536: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction252___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10698, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction252].i]) return;
-  return_label537: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction252].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction253___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10702, LOCATE_parser___ReduceAction253___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___ReduceAction253___action, LOCATE_parser, 10707); 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(30)) /*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_label538: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction253___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10714, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction253].i]) return;
-  return_label539: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction253].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction254___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10718, LOCATE_parser___ReduceAction254___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___ReduceAction254___action, LOCATE_parser, 10723); 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(30)) /*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_label540: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction254___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10731, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction254].i]) return;
-  return_label541: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction254].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction255___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10735, LOCATE_parser___ReduceAction255___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___ReduceAction255___action, LOCATE_parser, 10741); 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___ReduceAction255___action, LOCATE_parser, 10743); 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(30)) /*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_label542: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction255___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10751, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction255].i]) return;
-  return_label543: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction255].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction256___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10755, LOCATE_parser___ReduceAction256___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___ReduceAction256___action, LOCATE_parser, 10760); 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(30)) /*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_label544: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction256___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10764, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction256].i]) return;
-  return_label545: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction256].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction257___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10768, LOCATE_parser___ReduceAction257___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___ReduceAction257___action, LOCATE_parser, 10773); 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(30)) /*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_label546: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction257___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10777, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction257].i]) return;
-  return_label547: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction257].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction258___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10781, LOCATE_parser___ReduceAction258___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___ReduceAction258___action, LOCATE_parser, 10786); 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(30)) /*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_label548: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction258___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10790, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction258].i]) return;
-  return_label549: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction258].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction259___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10794, LOCATE_parser___ReduceAction259___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___ReduceAction259___action, LOCATE_parser, 10799); 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(30)) /*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_label550: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction259___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10803, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction259].i]) return;
-  return_label551: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction259].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction260___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10807, LOCATE_parser___ReduceAction260___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___ReduceAction260___action, LOCATE_parser, 10812); 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(30)) /*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_label552: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction260___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10816, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction260].i]) return;
-  return_label553: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction260].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction261___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10820, LOCATE_parser___ReduceAction261___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___ReduceAction261___action, LOCATE_parser, 10831); 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___ReduceAction261___action, LOCATE_parser, 10833); 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___ReduceAction261___action, LOCATE_parser, 10835); 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(30)) /*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_label554: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction261___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10852, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction261].i]) return;
-  return_label555: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction261].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction262___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10856, LOCATE_parser___ReduceAction262___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___ReduceAction262___action, LOCATE_parser, 10866); 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___ReduceAction262___action, LOCATE_parser, 10868); 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(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_label556: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction262___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10885, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction262].i]) return;
-  return_label557: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction262].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction263___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10889, LOCATE_parser___ReduceAction263___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___ReduceAction263___action, LOCATE_parser, 10901); 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___ReduceAction263___action, LOCATE_parser, 10903); 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___ReduceAction263___action, LOCATE_parser, 10905); 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___ReduceAction263___action, LOCATE_parser, 10914); 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(30)) /*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_label558: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction263___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10931, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction263].i]) return;
-  return_label559: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction263].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction264___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10935, LOCATE_parser___ReduceAction264___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___ReduceAction264___action, LOCATE_parser, 10946); 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___ReduceAction264___action, LOCATE_parser, 10948); 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___ReduceAction264___action, LOCATE_parser, 10957); 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(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_label560: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction264___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10974, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction264].i]) return;
-  return_label561: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction264].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction265___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10978, LOCATE_parser___ReduceAction265___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___ReduceAction265___action, LOCATE_parser, 10985); 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___ReduceAction265___action, LOCATE_parser, 10987); 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(30)) /*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_label562: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction265___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11003, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction265].i]) return;
-  return_label563: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction265].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction266___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11007, LOCATE_parser___ReduceAction266___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___ReduceAction266___action, LOCATE_parser, 11015); 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___ReduceAction266___action, LOCATE_parser, 11017); 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___ReduceAction266___action, LOCATE_parser, 11019); 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(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_label564: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction266___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11035, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction266].i]) return;
-  return_label565: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction266].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction267___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11039, LOCATE_parser___ReduceAction267___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___ReduceAction267___action, LOCATE_parser, 11049); 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___ReduceAction267___action, LOCATE_parser, 11051); 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___ReduceAction267___action, LOCATE_parser, 11053); 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(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_label566: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction267___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11069, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction267].i]) return;
-  return_label567: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction267].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction268___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11073, LOCATE_parser___ReduceAction268___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___ReduceAction268___action, LOCATE_parser, 11082); 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___ReduceAction268___action, LOCATE_parser, 11084); 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(30)) /*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_label568: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction268___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11100, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction268].i]) return;
-  return_label569: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction268].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction269___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11104, LOCATE_parser___ReduceAction269___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___ReduceAction269___action, LOCATE_parser, 11110); 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(31)) /*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_label570: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction269___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11117, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction269].i]) return;
-  return_label571: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction269].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction270___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11121, LOCATE_parser___ReduceAction270___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___ReduceAction270___action, LOCATE_parser, 11128); 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___ReduceAction270___action, LOCATE_parser, 11130); 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(31)) /*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_label572: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction270___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11144, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction270].i]) return;
-  return_label573: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction270].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction271___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11148, LOCATE_parser___ReduceAction271___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___ReduceAction271___action, LOCATE_parser, 11156); 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___ReduceAction271___action, LOCATE_parser, 11158); 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___ReduceAction271___action, LOCATE_parser, 11160); 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(32)) /*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_label574: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction271___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11170, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction271].i]) return;
-  return_label575: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction271].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction272___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11174, LOCATE_parser___ReduceAction272___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___ReduceAction272___action, LOCATE_parser, 11183); 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___ReduceAction272___action, LOCATE_parser, 11185); 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___ReduceAction272___action, LOCATE_parser, 11194); 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___ReduceAction272___action, LOCATE_parser, 11196); 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(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_label576: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction272___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11206, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction272].i]) return;
-  return_label577: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction272].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction273___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11210, LOCATE_parser___ReduceAction273___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___ReduceAction273___action, LOCATE_parser, 11220); 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___ReduceAction273___action, LOCATE_parser, 11222); 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___ReduceAction273___action, LOCATE_parser, 11225); 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(33)) /*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_label578: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction273___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11241, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction273].i]) return;
-  return_label579: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction273].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction274___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11245, LOCATE_parser___ReduceAction274___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___ReduceAction274___action, LOCATE_parser, 11256); 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___ReduceAction274___action, LOCATE_parser, 11258); 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___ReduceAction274___action, LOCATE_parser, 11261); 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___ReduceAction274___action, LOCATE_parser, 11263); 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(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_label580: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction274___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11286, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction274].i]) return;
-  return_label581: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction274].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction275___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11290, LOCATE_parser___ReduceAction275___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___ReduceAction275___action, LOCATE_parser, 11301); 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___ReduceAction275___action, LOCATE_parser, 11303); 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___ReduceAction275___action, LOCATE_parser, 11312); 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___ReduceAction275___action, LOCATE_parser, 11315); 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(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_label582: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction275___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11331, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction275].i]) return;
-  return_label583: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction275].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction276___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11335, LOCATE_parser___ReduceAction276___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___ReduceAction276___action, LOCATE_parser, 11347); 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___ReduceAction276___action, LOCATE_parser, 11349); 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___ReduceAction276___action, LOCATE_parser, 11358); 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___ReduceAction276___action, LOCATE_parser, 11361); 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___ReduceAction276___action, LOCATE_parser, 11363); 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(33)) /*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_label584: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction276___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11386, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction276].i]) return;
-  return_label585: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction276].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction277___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11390, LOCATE_parser___ReduceAction277___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___ReduceAction277___action, LOCATE_parser, 11398); 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___ReduceAction277___action, LOCATE_parser, 11400); 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(33)) /*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_label586: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction277___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11410, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction277].i]) return;
-  return_label587: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction277].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction278___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11414, LOCATE_parser___ReduceAction278___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___ReduceAction278___action, LOCATE_parser, 11423); 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___ReduceAction278___action, LOCATE_parser, 11425); 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___ReduceAction278___action, LOCATE_parser, 11434); 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(33)) /*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_label588: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction278___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11444, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction278].i]) return;
-  return_label589: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction278].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction279___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11448, LOCATE_parser___ReduceAction279___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___ReduceAction279___action, LOCATE_parser, 11454); 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___ReduceAction279___action, LOCATE_parser, 11456); 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(34)) /*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_label590: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction279___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11467, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction279].i]) return;
-  return_label591: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction279].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction280___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11471, LOCATE_parser___ReduceAction280___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___ReduceAction280___action, LOCATE_parser, 11478); 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___ReduceAction280___action, LOCATE_parser, 11480); 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___ReduceAction280___action, LOCATE_parser, 11482); 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(34)) /*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_label592: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction280___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11493, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction280].i]) return;
-  return_label593: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction280].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction281___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11497, LOCATE_parser___ReduceAction281___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___ReduceAction281___action, LOCATE_parser, 11506); 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___ReduceAction281___action, LOCATE_parser, 11508); 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___ReduceAction281___action, LOCATE_parser, 11510); 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___ReduceAction281___action, LOCATE_parser, 11512); 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(34)) /*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_label594: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction281___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11523, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction281].i]) return;
-  return_label595: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction281].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction282___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11527, LOCATE_parser___ReduceAction282___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___ReduceAction282___action, LOCATE_parser, 11537); 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___ReduceAction282___action, LOCATE_parser, 11539); 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___ReduceAction282___action, LOCATE_parser, 11541); 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___ReduceAction282___action, LOCATE_parser, 11543); 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___ReduceAction282___action, LOCATE_parser, 11545); 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(34)) /*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_label596: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction282___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11556, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction282].i]) return;
-  return_label597: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction282].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction283___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11560, LOCATE_parser___ReduceAction283___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___ReduceAction283___action, LOCATE_parser, 11570); 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___ReduceAction283___action, LOCATE_parser, 11572); 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___ReduceAction283___action, LOCATE_parser, 11574); 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___ReduceAction283___action, LOCATE_parser, 11576); 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(35)) /*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_label598: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction283___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11586, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction283].i]) return;
-  return_label599: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction283].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction284___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11590, LOCATE_parser___ReduceAction284___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___ReduceAction284___action, LOCATE_parser, 11599); 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___ReduceAction284___action, LOCATE_parser, 11601); 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___ReduceAction284___action, LOCATE_parser, 11603); 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(35)) /*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_label600: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction284___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11613, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction284].i]) return;
-  return_label601: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction284].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction285___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11617, LOCATE_parser___ReduceAction285___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___ReduceAction285___action, LOCATE_parser, 11629); 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___ReduceAction285___action, LOCATE_parser, 11631); 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___ReduceAction285___action, LOCATE_parser, 11633); 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___ReduceAction285___action, LOCATE_parser, 11642); 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___ReduceAction285___action, LOCATE_parser, 11644); 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(35)) /*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_label602: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction285___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11655, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction285].i]) return;
-  return_label603: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction285].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction286___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11659, LOCATE_parser___ReduceAction286___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___ReduceAction286___action, LOCATE_parser, 11670); 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___ReduceAction286___action, LOCATE_parser, 11672); 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___ReduceAction286___action, LOCATE_parser, 11681); 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___ReduceAction286___action, LOCATE_parser, 11683); 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(35)) /*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_label604: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction286___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11694, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction286].i]) return;
-  return_label605: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction286].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction287___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11698, LOCATE_parser___ReduceAction287___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___ReduceAction287___action, LOCATE_parser, 11707); 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___ReduceAction287___action, LOCATE_parser, 11709); 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___ReduceAction287___action, LOCATE_parser, 11718); 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___ReduceAction287___action, LOCATE_parser, 11720); 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(35)) /*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_label606: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction287___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11730, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction287].i]) return;
-  return_label607: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction287].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction288___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11734, LOCATE_parser___ReduceAction288___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___ReduceAction288___action, LOCATE_parser, 11744); 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___ReduceAction288___action, LOCATE_parser, 11746); 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___ReduceAction288___action, LOCATE_parser, 11748); 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___ReduceAction288___action, LOCATE_parser, 11750); 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(35)) /*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_label608: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction288___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11760, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction288].i]) return;
-  return_label609: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction288].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction289___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11764, LOCATE_parser___ReduceAction289___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___ReduceAction289___action, LOCATE_parser, 11773); 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___ReduceAction289___action, LOCATE_parser, 11775); 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___ReduceAction289___action, LOCATE_parser, 11777); 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(35)) /*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_label610: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction289___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11787, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction289].i]) return;
-  return_label611: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction289].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction290___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11791, LOCATE_parser___ReduceAction290___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___ReduceAction290___action, LOCATE_parser, 11803); 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___ReduceAction290___action, LOCATE_parser, 11805); 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___ReduceAction290___action, LOCATE_parser, 11807); 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___ReduceAction290___action, LOCATE_parser, 11816); 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___ReduceAction290___action, LOCATE_parser, 11818); 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(35)) /*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_label612: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction290___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11829, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction290].i]) return;
-  return_label613: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction290].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction291___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11833, LOCATE_parser___ReduceAction291___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___ReduceAction291___action, LOCATE_parser, 11844); 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___ReduceAction291___action, LOCATE_parser, 11846); 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___ReduceAction291___action, LOCATE_parser, 11855); 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___ReduceAction291___action, LOCATE_parser, 11857); 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(35)) /*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_label614: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction291___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11868, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction291].i]) return;
-  return_label615: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction291].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction292___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11872, LOCATE_parser___ReduceAction292___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___ReduceAction292___action, LOCATE_parser, 11881); 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___ReduceAction292___action, LOCATE_parser, 11883); 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___ReduceAction292___action, LOCATE_parser, 11892); 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___ReduceAction292___action, LOCATE_parser, 11894); 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(35)) /*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_label616: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction292___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11904, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction292].i]) return;
-  return_label617: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction292].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction293___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11908, LOCATE_parser___ReduceAction293___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___ReduceAction293___action, LOCATE_parser, 11913); 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(36)) /*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_label618: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction293___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11920, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction293].i]) return;
-  return_label619: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction293].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction294___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11924, LOCATE_parser___ReduceAction294___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___ReduceAction294___action, LOCATE_parser, 11929); 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(36)) /*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_label620: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction294___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11936, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction294].i]) return;
-  return_label621: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction294].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction295___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11940, LOCATE_parser___ReduceAction295___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___ReduceAction295___action, LOCATE_parser, 11946); 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___ReduceAction295___action, LOCATE_parser, 11948); 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(37)) /*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_label622: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction295___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11956, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction295].i]) return;
-  return_label623: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction295].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction296___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11960, LOCATE_parser___ReduceAction296___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___ReduceAction296___action, LOCATE_parser, 11972); 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___ReduceAction296___action, LOCATE_parser, 11974); 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___ReduceAction296___action, LOCATE_parser, 11976); 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___ReduceAction296___action, LOCATE_parser, 11978); 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(38)) /*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_label624: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction296___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11988, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction296].i]) return;
-  return_label625: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction296].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction297___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11992, LOCATE_parser___ReduceAction297___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___ReduceAction297___action, LOCATE_parser, 12002); 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___ReduceAction297___action, LOCATE_parser, 12004); 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___ReduceAction297___action, LOCATE_parser, 12006); 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(38)) /*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_label626: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction297___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12016, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction297].i]) return;
-  return_label627: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction297].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction298___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12020, LOCATE_parser___ReduceAction298___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___ReduceAction298___action, LOCATE_parser, 12033); 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___ReduceAction298___action, LOCATE_parser, 12035); 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___ReduceAction298___action, LOCATE_parser, 12038); 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___ReduceAction298___action, LOCATE_parser, 12046); 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(38)) /*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_label628: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction298___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12056, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction298].i]) return;
-  return_label629: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction298].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction299___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12060, LOCATE_parser___ReduceAction299___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___ReduceAction299___action, LOCATE_parser, 12074); 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___ReduceAction299___action, LOCATE_parser, 12076); 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___ReduceAction299___action, LOCATE_parser, 12079); 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___ReduceAction299___action, LOCATE_parser, 12081); 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___ReduceAction299___action, LOCATE_parser, 12096); 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(38)) /*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_label630: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction299___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12106, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction299].i]) return;
-  return_label631: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction299].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction300___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12110, LOCATE_parser___ReduceAction300___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___ReduceAction300___action, LOCATE_parser, 12120); 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___ReduceAction300___action, LOCATE_parser, 12122); 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___ReduceAction300___action, LOCATE_parser, 12124); 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(38)) /*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_label632: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction300___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12134, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction300].i]) return;
-  return_label633: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction300].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction301___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12138, LOCATE_parser___ReduceAction301___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___ReduceAction301___action, LOCATE_parser, 12149); 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___ReduceAction301___action, LOCATE_parser, 12151); 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___ReduceAction301___action, LOCATE_parser, 12153); 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(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_label634: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction301___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12163, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction301].i]) return;
-  return_label635: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction301].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction302___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12167, LOCATE_parser___ReduceAction302___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___ReduceAction302___action, LOCATE_parser, 12173); 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(39)) /*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_label636: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction302___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12177, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction302].i]) return;
-  return_label637: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction302].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction303___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12181, LOCATE_parser___ReduceAction303___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(39)) /*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_label638: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction303___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12188, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction303].i]) return;
-  return_label639: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction303].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction304___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12192, LOCATE_parser___ReduceAction304___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___ReduceAction304___action, LOCATE_parser, 12202); 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___ReduceAction304___action, LOCATE_parser, 12204); 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___ReduceAction304___action, LOCATE_parser, 12206); 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___ReduceAction304___action, LOCATE_parser, 12208); 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(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_label640: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction304___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12218, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction304].i]) return;
-  return_label641: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction304].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction305___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12222, LOCATE_parser___ReduceAction305___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___ReduceAction305___action, LOCATE_parser, 12230); 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___ReduceAction305___action, LOCATE_parser, 12232); 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___ReduceAction305___action, LOCATE_parser, 12234); 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(41)) /*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_label642: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction305___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12243, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction305].i]) return;
-  return_label643: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction305].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction306___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12247, LOCATE_parser___ReduceAction306___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___ReduceAction306___action, LOCATE_parser, 12258); 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___ReduceAction306___action, LOCATE_parser, 12260); 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___ReduceAction306___action, LOCATE_parser, 12262); 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(42)) /*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_label644: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction306___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12271, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction306].i]) return;
-  return_label645: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction306].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction307___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12275, LOCATE_parser___ReduceAction307___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___ReduceAction307___action, LOCATE_parser, 12281); 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___ReduceAction307___action, LOCATE_parser, 12283); 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(43)) /*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_label646: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction307___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12292, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction307].i]) return;
-  return_label647: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction307].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction308___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12296, LOCATE_parser___ReduceAction308___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___ReduceAction308___action, LOCATE_parser, 12303); 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___ReduceAction308___action, LOCATE_parser, 12305); 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___ReduceAction308___action, LOCATE_parser, 12307); 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(43)) /*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_label648: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction308___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12316, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction308].i]) return;
-  return_label649: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction308].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction309___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12320, LOCATE_parser___ReduceAction309___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___ReduceAction309___action, LOCATE_parser, 12326); 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(44)) /*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_label650: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction309___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12330, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction309].i]) return;
-  return_label651: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction309].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction310___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12334, LOCATE_parser___ReduceAction310___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___ReduceAction310___action, LOCATE_parser, 12339); 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_label652: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction310___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12343, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction310].i]) return;
-  return_label653: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction310].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction311___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12347, LOCATE_parser___ReduceAction311___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___ReduceAction311___action, LOCATE_parser, 12359); 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___ReduceAction311___action, LOCATE_parser, 12361); 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___ReduceAction311___action, LOCATE_parser, 12363); 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___ReduceAction311___action, LOCATE_parser, 12372); 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(45)) /*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_label654: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction311___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12389, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction311].i]) return;
-  return_label655: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction311].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction312___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12393, LOCATE_parser___ReduceAction312___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___ReduceAction312___action, LOCATE_parser, 12404); 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___ReduceAction312___action, LOCATE_parser, 12406); 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___ReduceAction312___action, LOCATE_parser, 12415); 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(45)) /*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_label656: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction312___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12432, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction312].i]) return;
-  return_label657: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction312].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction313___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12436, LOCATE_parser___ReduceAction313___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___ReduceAction313___action, LOCATE_parser, 12445); 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___ReduceAction313___action, LOCATE_parser, 12447); 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___ReduceAction313___action, LOCATE_parser, 12456); 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(45)) /*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_label658: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction313___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12472, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction313].i]) return;
-  return_label659: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction313].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction314___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12476, LOCATE_parser___ReduceAction314___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___ReduceAction314___action, LOCATE_parser, 12481); 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_label660: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction314___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12485, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction314].i]) return;
-  return_label661: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction314].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction315___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12489, LOCATE_parser___ReduceAction315___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___ReduceAction315___action, LOCATE_parser, 12504); 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___ReduceAction315___action, LOCATE_parser, 12506); 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___ReduceAction315___action, LOCATE_parser, 12508); 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___ReduceAction315___action, LOCATE_parser, 12510); 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___ReduceAction315___action, LOCATE_parser, 12512); 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___ReduceAction315___action, LOCATE_parser, 12514); 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(46)) /*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_label662: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction315___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12526, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction315].i]) return;
-  return_label663: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction315].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction316___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12530, LOCATE_parser___ReduceAction316___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___ReduceAction316___action, LOCATE_parser, 12535); 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_label664: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction316___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12539, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction316].i]) return;
-  return_label665: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction316].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction317___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12543, LOCATE_parser___ReduceAction317___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___ReduceAction317___action, LOCATE_parser, 12551); 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___ReduceAction317___action, LOCATE_parser, 12553); 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(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_label666: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction317___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12561, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction317].i]) return;
-  return_label667: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction317].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction318___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12565, LOCATE_parser___ReduceAction318___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___ReduceAction318___action, LOCATE_parser, 12573); 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___ReduceAction318___action, LOCATE_parser, 12575); 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(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_label668: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction318___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12583, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction318].i]) return;
-  return_label669: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction318].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction319___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12587, LOCATE_parser___ReduceAction319___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___ReduceAction319___action, LOCATE_parser, 12592); 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_label670: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction319___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12596, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction319].i]) return;
-  return_label671: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction319].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction320___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12600, LOCATE_parser___ReduceAction320___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___ReduceAction320___action, LOCATE_parser, 12607); 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___ReduceAction320___action, LOCATE_parser, 12609); 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(48)) /*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_label672: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction320___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12617, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction320].i]) return;
-  return_label673: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction320].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction321___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12621, LOCATE_parser___ReduceAction321___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___ReduceAction321___action, LOCATE_parser, 12626); 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_label674: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction321___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12630, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction321].i]) return;
-  return_label675: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction321].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction322___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12634, LOCATE_parser___ReduceAction322___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___ReduceAction322___action, LOCATE_parser, 12642); 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___ReduceAction322___action, LOCATE_parser, 12644); 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(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_label676: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction322___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12652, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction322].i]) return;
-  return_label677: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction322].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction323___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12656, LOCATE_parser___ReduceAction323___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___ReduceAction323___action, LOCATE_parser, 12664); 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___ReduceAction323___action, LOCATE_parser, 12666); 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(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_label678: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction323___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12674, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction323].i]) return;
-  return_label679: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction323].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction324___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12678, LOCATE_parser___ReduceAction324___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___ReduceAction324___action, LOCATE_parser, 12686); 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___ReduceAction324___action, LOCATE_parser, 12688); 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(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_label680: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction324___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12696, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction324].i]) return;
-  return_label681: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction324].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction325___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12700, LOCATE_parser___ReduceAction325___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___ReduceAction325___action, LOCATE_parser, 12708); 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___ReduceAction325___action, LOCATE_parser, 12710); 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(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_label682: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction325___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12718, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction325].i]) return;
-  return_label683: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction325].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction326___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12722, LOCATE_parser___ReduceAction326___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___ReduceAction326___action, LOCATE_parser, 12730); 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___ReduceAction326___action, LOCATE_parser, 12732); 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(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_label684: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction326___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12740, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction326].i]) return;
-  return_label685: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction326].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction327___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12744, LOCATE_parser___ReduceAction327___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___ReduceAction327___action, LOCATE_parser, 12752); 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___ReduceAction327___action, LOCATE_parser, 12754); 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(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_label686: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction327___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12762, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction327].i]) return;
-  return_label687: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction327].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction328___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12766, LOCATE_parser___ReduceAction328___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___ReduceAction328___action, LOCATE_parser, 12774); 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___ReduceAction328___action, LOCATE_parser, 12776); 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(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_label688: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction328___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12784, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction328].i]) return;
-  return_label689: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction328].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction329___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12788, LOCATE_parser___ReduceAction329___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___ReduceAction329___action, LOCATE_parser, 12796); 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___ReduceAction329___action, LOCATE_parser, 12798); 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(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_label690: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction329___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12806, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction329].i]) return;
-  return_label691: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction329].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction330___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12810, LOCATE_parser___ReduceAction330___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___ReduceAction330___action, LOCATE_parser, 12818); 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___ReduceAction330___action, LOCATE_parser, 12820); 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(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_label692: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction330___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12828, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction330].i]) return;
-  return_label693: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction330].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction331___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12832, LOCATE_parser___ReduceAction331___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___ReduceAction331___action, LOCATE_parser, 12837); 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_label694: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction331___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12841, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction331].i]) return;
-  return_label695: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction331].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction332___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12845, LOCATE_parser___ReduceAction332___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___ReduceAction332___action, LOCATE_parser, 12853); 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___ReduceAction332___action, LOCATE_parser, 12855); 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(50)) /*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_label696: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction332___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12863, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction332].i]) return;
-  return_label697: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction332].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction333___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12867, LOCATE_parser___ReduceAction333___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___ReduceAction333___action, LOCATE_parser, 12875); 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___ReduceAction333___action, LOCATE_parser, 12877); 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(50)) /*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_label698: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction333___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12885, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction333].i]) return;
-  return_label699: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction333].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction334___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12889, LOCATE_parser___ReduceAction334___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___ReduceAction334___action, LOCATE_parser, 12894); 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_label700: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction334___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12898, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction334].i]) return;
-  return_label701: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction334].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction335___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12902, LOCATE_parser___ReduceAction335___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___ReduceAction335___action, LOCATE_parser, 12910); 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___ReduceAction335___action, LOCATE_parser, 12912); 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(51)) /*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_label702: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction335___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12920, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction335].i]) return;
-  return_label703: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction335].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction336___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12924, LOCATE_parser___ReduceAction336___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___ReduceAction336___action, LOCATE_parser, 12932); 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___ReduceAction336___action, LOCATE_parser, 12934); 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(51)) /*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_label704: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction336___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12942, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction336].i]) return;
-  return_label705: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction336].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction337___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12946, LOCATE_parser___ReduceAction337___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___ReduceAction337___action, LOCATE_parser, 12954); 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___ReduceAction337___action, LOCATE_parser, 12956); 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(51)) /*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_label706: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction337___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12964, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction337].i]) return;
-  return_label707: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction337].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction338___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12968, LOCATE_parser___ReduceAction338___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___ReduceAction338___action, LOCATE_parser, 12973); 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_label708: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction338___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12977, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction338].i]) return;
-  return_label709: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction338].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction339___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12981, LOCATE_parser___ReduceAction339___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___ReduceAction339___action, LOCATE_parser, 12988); 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___ReduceAction339___action, LOCATE_parser, 12990); 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(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_label710: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction339___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12998, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction339].i]) return;
-  return_label711: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction339].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction340___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13002, LOCATE_parser___ReduceAction340___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___ReduceAction340___action, LOCATE_parser, 13009); 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___ReduceAction340___action, LOCATE_parser, 13011); 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(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_label712: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction340___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13019, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction340].i]) return;
-  return_label713: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction340].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction341___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13023, LOCATE_parser___ReduceAction341___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___ReduceAction341___action, LOCATE_parser, 13028); 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(53)) /*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_label714: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction341___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13032, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction341].i]) return;
-  return_label715: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction341].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction342___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13036, LOCATE_parser___ReduceAction342___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___ReduceAction342___action, LOCATE_parser, 13045); 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___ReduceAction342___action, LOCATE_parser, 13047); 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___ReduceAction342___action, LOCATE_parser, 13049); 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(53)) /*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_label716: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction342___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13066, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction342].i]) return;
-  return_label717: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction342].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction343___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13070, LOCATE_parser___ReduceAction343___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___ReduceAction343___action, LOCATE_parser, 13078); 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___ReduceAction343___action, LOCATE_parser, 13080); 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(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_label718: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction343___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13088, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction343].i]) return;
-  return_label719: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction343].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction344___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13092, LOCATE_parser___ReduceAction344___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___ReduceAction344___action, LOCATE_parser, 13099); 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(54)) /*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_label720: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction344___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13107, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction344].i]) return;
-  return_label721: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction344].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction345___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13111, LOCATE_parser___ReduceAction345___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___ReduceAction345___action, LOCATE_parser, 13122); 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___ReduceAction345___action, LOCATE_parser, 13124); 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___ReduceAction345___action, LOCATE_parser, 13126); 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(54)) /*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_label722: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction345___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13143, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction345].i]) return;
-  return_label723: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction345].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction346___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13147, LOCATE_parser___ReduceAction346___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___ReduceAction346___action, LOCATE_parser, 13157); 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___ReduceAction346___action, LOCATE_parser, 13159); 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(54)) /*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_label724: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction346___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13176, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction346].i]) return;
-  return_label725: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction346].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction347___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13180, LOCATE_parser___ReduceAction347___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___ReduceAction347___action, LOCATE_parser, 13187); 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___ReduceAction347___action, LOCATE_parser, 13189); 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(54)) /*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_label726: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction347___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13205, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction347].i]) return;
-  return_label727: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction347].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction348___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13209, LOCATE_parser___ReduceAction348___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___ReduceAction348___action, LOCATE_parser, 13217); 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___ReduceAction348___action, LOCATE_parser, 13219); 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___ReduceAction348___action, LOCATE_parser, 13221); 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(54)) /*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_label728: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction348___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13237, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction348].i]) return;
-  return_label729: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction348].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction349___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13241, LOCATE_parser___ReduceAction349___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___ReduceAction349___action, LOCATE_parser, 13251); 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___ReduceAction349___action, LOCATE_parser, 13253); 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___ReduceAction349___action, LOCATE_parser, 13255); 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(54)) /*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_label730: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction349___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13271, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction349].i]) return;
-  return_label731: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction349].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction350___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13275, LOCATE_parser___ReduceAction350___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___ReduceAction350___action, LOCATE_parser, 13284); 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___ReduceAction350___action, LOCATE_parser, 13286); 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(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_label732: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction350___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13302, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction350].i]) return;
-  return_label733: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction350].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction351___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13306, LOCATE_parser___ReduceAction351___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___ReduceAction351___action, LOCATE_parser, 13314); 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___ReduceAction351___action, LOCATE_parser, 13316); 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(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_label734: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction351___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13332, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction351].i]) return;
-  return_label735: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction351].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction352___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13336, LOCATE_parser___ReduceAction352___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___ReduceAction352___action, LOCATE_parser, 13348); 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___ReduceAction352___action, LOCATE_parser, 13350); 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___ReduceAction352___action, LOCATE_parser, 13352); 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___ReduceAction352___action, LOCATE_parser, 13354); 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(54)) /*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_label736: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction352___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13371, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction352].i]) return;
-  return_label737: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction352].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction353___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13375, LOCATE_parser___ReduceAction353___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___ReduceAction353___action, LOCATE_parser, 13388); 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___ReduceAction353___action, LOCATE_parser, 13390); 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(54)) /*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_label738: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction353___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13398, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction353].i]) return;
-  return_label739: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction353].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction354___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13402, LOCATE_parser___ReduceAction354___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___ReduceAction354___action, LOCATE_parser, 13415); 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___ReduceAction354___action, LOCATE_parser, 13417); 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(54)) /*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_label740: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction354___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13425, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction354].i]) return;
-  return_label741: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction354].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction355___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13429, LOCATE_parser___ReduceAction355___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___ReduceAction355___action, LOCATE_parser, 13435); 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(54)) /*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_label742: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction355___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13449, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction355].i]) return;
-  return_label743: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction355].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction356___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13453, LOCATE_parser___ReduceAction356___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___ReduceAction356___action, LOCATE_parser, 13458); 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(54)) /*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_label744: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction356___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13465, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction356].i]) return;
-  return_label745: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction356].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction357___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13469, LOCATE_parser___ReduceAction357___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___ReduceAction357___action, LOCATE_parser, 13474); 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(54)) /*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_label746: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction357___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13481, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction357].i]) return;
-  return_label747: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction357].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction358___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13485, LOCATE_parser___ReduceAction358___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___ReduceAction358___action, LOCATE_parser, 13490); 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(54)) /*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_label748: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction358___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13497, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction358].i]) return;
-  return_label749: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction358].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction359___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13501, LOCATE_parser___ReduceAction359___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___ReduceAction359___action, LOCATE_parser, 13506); 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(54)) /*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_label750: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction359___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13513, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction359].i]) return;
-  return_label751: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction359].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction360___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13517, LOCATE_parser___ReduceAction360___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___ReduceAction360___action, LOCATE_parser, 13522); 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(54)) /*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_label752: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction360___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13529, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction360].i]) return;
-  return_label753: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction360].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction361___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13533, LOCATE_parser___ReduceAction361___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___ReduceAction361___action, LOCATE_parser, 13538); 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(54)) /*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_label754: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction361___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13545, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction361].i]) return;
-  return_label755: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction361].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction362___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13549, LOCATE_parser___ReduceAction362___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___ReduceAction362___action, LOCATE_parser, 13554); 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(54)) /*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_label756: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction362___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13561, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction362].i]) return;
-  return_label757: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction362].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction363___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13565, LOCATE_parser___ReduceAction363___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___ReduceAction363___action, LOCATE_parser, 13570); 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(54)) /*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_label758: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction363___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13577, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction363].i]) return;
-  return_label759: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction363].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction364___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13581, LOCATE_parser___ReduceAction364___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___ReduceAction364___action, LOCATE_parser, 13586); 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(54)) /*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_label760: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction364___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13590, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction364].i]) return;
-  return_label761: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction364].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction365___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13594, LOCATE_parser___ReduceAction365___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___ReduceAction365___action, LOCATE_parser, 13601); 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(54)) /*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_label762: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction365___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13605, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction365].i]) return;
-  return_label763: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction365].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction366___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13609, LOCATE_parser___ReduceAction366___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___ReduceAction366___action, LOCATE_parser, 13623); 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___ReduceAction366___action, LOCATE_parser, 13625); 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___ReduceAction366___action, LOCATE_parser, 13627); 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(54)) /*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_label764: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction366___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13636, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction366].i]) return;
-  return_label765: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction366].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction367___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13640, LOCATE_parser___ReduceAction367___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___ReduceAction367___action, LOCATE_parser, 13647); 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___ReduceAction367___action, LOCATE_parser, 13649); 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(55)) /*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_label766: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction367___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13666, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction367].i]) return;
-  return_label767: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction367].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction368___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13670, LOCATE_parser___ReduceAction368___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___ReduceAction368___action, LOCATE_parser, 13678); 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___ReduceAction368___action, LOCATE_parser, 13680); 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___ReduceAction368___action, LOCATE_parser, 13682); 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(55)) /*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_label768: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction368___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13706, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction368].i]) return;
-  return_label769: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction368].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction369___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13710, LOCATE_parser___ReduceAction369___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___ReduceAction369___action, LOCATE_parser, 13719); 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___ReduceAction369___action, LOCATE_parser, 13721); 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_label770: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction369___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13731, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction369].i]) return;
-  return_label771: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction369].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction370___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13735, LOCATE_parser___ReduceAction370___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___ReduceAction370___action, LOCATE_parser, 13740); 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(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_label772: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction370___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13747, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction370].i]) return;
-  return_label773: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction370].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction371___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13751, LOCATE_parser___ReduceAction371___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___ReduceAction371___action, LOCATE_parser, 13760); 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___ReduceAction371___action, LOCATE_parser, 13762); 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(58)) /*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_label774: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction371___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13772, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction371].i]) return;
-  return_label775: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction371].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction372___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13776, LOCATE_parser___ReduceAction372___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___ReduceAction372___action, LOCATE_parser, 13781); 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(59)) /*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_label776: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction372___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13788, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction372].i]) return;
-  return_label777: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction372].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction373___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13792, LOCATE_parser___ReduceAction373___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___ReduceAction373___action, LOCATE_parser, 13797); 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(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_label778: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction373___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13804, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction373].i]) return;
-  return_label779: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction373].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction374___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13808, LOCATE_parser___ReduceAction374___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___ReduceAction374___action, LOCATE_parser, 13818); 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_label780: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction374___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13825, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction374].i]) return;
-  return_label781: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction374].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction375___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13829, LOCATE_parser___ReduceAction375___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___ReduceAction375___action, LOCATE_parser, 13840); 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___ReduceAction375___action, LOCATE_parser, 13842); 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_label782: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction375___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13856, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction375].i]) return;
-  return_label783: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction375].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction376___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13860, 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[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(61)) /*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, 13870, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction376].i]) return;
-  return_label785: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction376].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction377___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13874, LOCATE_parser___ReduceAction377___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(61)) /*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_label786: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction377___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13881, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction377].i]) return;
-  return_label787: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction377].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction378___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13885, LOCATE_parser___ReduceAction378___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___ReduceAction378___action, LOCATE_parser, 13895); 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(62)) /*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_label788: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction378___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13902, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction378].i]) return;
-  return_label789: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction378].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction379___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13906, LOCATE_parser___ReduceAction379___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___ReduceAction379___action, LOCATE_parser, 13917); 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___ReduceAction379___action, LOCATE_parser, 13919); 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(62)) /*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_label790: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction379___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13933, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction379].i]) return;
-  return_label791: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction379].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction380___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13937, 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[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___ReduceAction380___action, LOCATE_parser, 13943); 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(62)) /*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, 13950, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction380].i]) return;
-  return_label793: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction380].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction381___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13954, LOCATE_parser___ReduceAction381___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(62)) /*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_label794: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction381___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13964, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction381].i]) return;
-  return_label795: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction381].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction382___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13968, LOCATE_parser___ReduceAction382___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(62)) /*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_label796: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction382___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13975, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction382].i]) return;
-  return_label797: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction382].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction383___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13979, LOCATE_parser___ReduceAction383___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___ReduceAction383___action, LOCATE_parser, 13989); 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(63)) /*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_label798: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction383___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13996, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction383].i]) return;
-  return_label799: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction383].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction384___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14000, LOCATE_parser___ReduceAction384___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___ReduceAction384___action, LOCATE_parser, 14011); 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___ReduceAction384___action, LOCATE_parser, 14013); 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(63)) /*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_label800: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction384___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14027, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction384].i]) return;
-  return_label801: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction384].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction385___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14031, LOCATE_parser___ReduceAction385___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___ReduceAction385___action, LOCATE_parser, 14039); 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(64)) /*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_label802: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction385___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14043, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction385].i]) return;
-  return_label803: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction385].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction386___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14047, 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[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___ReduceAction386___action, LOCATE_parser, 14053); 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(65)) /*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, 14060, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction386].i]) return;
-  return_label805: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction386].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction387___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14064, LOCATE_parser___ReduceAction387___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___ReduceAction387___action, LOCATE_parser, 14074); 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___ReduceAction387___action, LOCATE_parser, 14076); 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(65)) /*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_label806: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction387___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14090, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction387].i]) return;
-  return_label807: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction387].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction388___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14094, LOCATE_parser___ReduceAction388___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___ReduceAction388___action, LOCATE_parser, 14100); 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(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_label808: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction388___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14108, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction388].i]) return;
-  return_label809: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction388].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction389___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14112, LOCATE_parser___ReduceAction389___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___ReduceAction389___action, LOCATE_parser, 14119); 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___ReduceAction389___action, LOCATE_parser, 14128); 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(66)) /*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_label810: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction389___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14136, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction389].i]) return;
-  return_label811: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction389].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction390___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14140, LOCATE_parser___ReduceAction390___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___ReduceAction390___action, LOCATE_parser, 14146); 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(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_label812: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction390___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14161, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction390].i]) return;
-  return_label813: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction390].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction391___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14165, LOCATE_parser___ReduceAction391___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___ReduceAction391___action, LOCATE_parser, 14172); 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(67)) /*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_label814: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction391___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14176, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction391].i]) return;
-  return_label815: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction391].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction392___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14180, LOCATE_parser___ReduceAction392___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___ReduceAction392___action, LOCATE_parser, 14187); 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(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_label816: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction392___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14191, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction392].i]) return;
-  return_label817: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction392].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction393___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14195, LOCATE_parser___ReduceAction393___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(69)) /*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_label818: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction393___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14201, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction393].i]) return;
-  return_label819: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction393].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction394___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14205, LOCATE_parser___ReduceAction394___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(69)) /*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_label820: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction394___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14211, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction394].i]) return;
-  return_label821: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction394].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction395___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14215, LOCATE_parser___ReduceAction395___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___ReduceAction395___action, LOCATE_parser, 14221); 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(70)) /*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_label822: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction395___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14235, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction395].i]) return;
-  return_label823: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction395].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction396___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14239, LOCATE_parser___ReduceAction396___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___ReduceAction396___action, LOCATE_parser, 14246); 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(70)) /*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_label824: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction396___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14260, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction396].i]) return;
-  return_label825: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction396].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction397___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14264, LOCATE_parser___ReduceAction397___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(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_label826: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction397___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14271, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction397].i]) return;
-  return_label827: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction397].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction398___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14275, LOCATE_parser___ReduceAction398___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(71)) /*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_label828: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction398___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14281, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction398].i]) return;
-  return_label829: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction398].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction399___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14285, LOCATE_parser___ReduceAction399___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___ReduceAction399___action, LOCATE_parser, 14290); 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(71)) /*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_label830: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction399___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14294, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction399].i]) return;
-  return_label831: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction399].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction400___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14298, LOCATE_parser___ReduceAction400___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(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_label832: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction400___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14305, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction400].i]) return;
-  return_label833: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction400].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction401___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14309, 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[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  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(72)) /*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, 14317, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction401].i]) return;
-  return_label835: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction401].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction402___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14321, LOCATE_parser___ReduceAction402___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(72)) /*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_label836: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction402___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14327, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction402].i]) return;
-  return_label837: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction402].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction403___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14331, LOCATE_parser___ReduceAction403___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___ReduceAction403___action, LOCATE_parser, 14337); 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(73)) /*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_label838: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction403___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14345, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction403].i]) return;
-  return_label839: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction403].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction404___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14349, LOCATE_parser___ReduceAction404___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___ReduceAction404___action, LOCATE_parser, 14354); 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_label840: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction404___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14358, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction404].i]) return;
-  return_label841: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction404].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction405___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14362, LOCATE_parser___ReduceAction405___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___ReduceAction405___action, LOCATE_parser, 14374); 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___ReduceAction405___action, LOCATE_parser, 14376); 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___ReduceAction405___action, LOCATE_parser, 14378); 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___ReduceAction405___action, LOCATE_parser, 14387); 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(74)) /*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_label842: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction405___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14404, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction405].i]) return;
-  return_label843: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction405].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction406___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14408, LOCATE_parser___ReduceAction406___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___ReduceAction406___action, LOCATE_parser, 14419); 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___ReduceAction406___action, LOCATE_parser, 14421); 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___ReduceAction406___action, LOCATE_parser, 14430); 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(74)) /*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_label844: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction406___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14447, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction406].i]) return;
-  return_label845: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction406].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction407___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14451, LOCATE_parser___ReduceAction407___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___ReduceAction407___action, LOCATE_parser, 14456); 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_label846: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction407___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14460, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction407].i]) return;
-  return_label847: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction407].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction408___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14464, LOCATE_parser___ReduceAction408___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___ReduceAction408___action, LOCATE_parser, 14479); 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___ReduceAction408___action, LOCATE_parser, 14481); 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___ReduceAction408___action, LOCATE_parser, 14483); 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___ReduceAction408___action, LOCATE_parser, 14485); 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___ReduceAction408___action, LOCATE_parser, 14487); 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___ReduceAction408___action, LOCATE_parser, 14489); 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(75)) /*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_label848: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction408___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14501, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction408].i]) return;
-  return_label849: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction408].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction409___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14505, LOCATE_parser___ReduceAction409___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___ReduceAction409___action, LOCATE_parser, 14510); 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_label850: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction409___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14514, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction409].i]) return;
-  return_label851: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction409].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction410___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14518, LOCATE_parser___ReduceAction410___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___ReduceAction410___action, LOCATE_parser, 14526); 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___ReduceAction410___action, LOCATE_parser, 14528); 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(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_label852: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction410___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14536, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction410].i]) return;
-  return_label853: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction410].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction411___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14540, LOCATE_parser___ReduceAction411___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___ReduceAction411___action, LOCATE_parser, 14548); 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___ReduceAction411___action, LOCATE_parser, 14550); 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(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_label854: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction411___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14558, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction411].i]) return;
-  return_label855: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction411].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction412___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14562, 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, 14567); 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_label856: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction412___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14571, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction412].i]) return;
-  return_label857: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction412].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction413___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14575, LOCATE_parser___ReduceAction413___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___ReduceAction413___action, LOCATE_parser, 14582); 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___ReduceAction413___action, LOCATE_parser, 14584); 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(77)) /*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_label858: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction413___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14592, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction413].i]) return;
-  return_label859: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction413].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction414___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14596, LOCATE_parser___ReduceAction414___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___ReduceAction414___action, LOCATE_parser, 14601); 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_label860: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction414___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14605, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction414].i]) return;
-  return_label861: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction414].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction415___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14609, LOCATE_parser___ReduceAction415___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___ReduceAction415___action, LOCATE_parser, 14617); 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___ReduceAction415___action, LOCATE_parser, 14619); 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(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_label862: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction415___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14627, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction415].i]) return;
-  return_label863: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction415].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction416___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14631, LOCATE_parser___ReduceAction416___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___ReduceAction416___action, LOCATE_parser, 14639); 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___ReduceAction416___action, LOCATE_parser, 14641); 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(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_label864: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction416___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14649, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction416].i]) return;
-  return_label865: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction416].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction417___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14653, LOCATE_parser___ReduceAction417___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___ReduceAction417___action, LOCATE_parser, 14661); 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___ReduceAction417___action, LOCATE_parser, 14663); 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(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_label866: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction417___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14671, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction417].i]) return;
-  return_label867: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction417].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction418___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14675, LOCATE_parser___ReduceAction418___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___ReduceAction418___action, LOCATE_parser, 14683); 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___ReduceAction418___action, LOCATE_parser, 14685); 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(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_label868: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction418___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14693, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction418].i]) return;
-  return_label869: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction418].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction419___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14697, LOCATE_parser___ReduceAction419___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___ReduceAction419___action, LOCATE_parser, 14705); 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___ReduceAction419___action, LOCATE_parser, 14707); 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(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_label870: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction419___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14715, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction419].i]) return;
-  return_label871: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction419].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction420___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14719, LOCATE_parser___ReduceAction420___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___ReduceAction420___action, LOCATE_parser, 14727); 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___ReduceAction420___action, LOCATE_parser, 14729); 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(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_label872: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction420___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14737, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction420].i]) return;
-  return_label873: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction420].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction421___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14741, LOCATE_parser___ReduceAction421___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___ReduceAction421___action, LOCATE_parser, 14749); 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___ReduceAction421___action, LOCATE_parser, 14751); 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(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_label874: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction421___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14759, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction421].i]) return;
-  return_label875: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction421].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction422___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14763, LOCATE_parser___ReduceAction422___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___ReduceAction422___action, LOCATE_parser, 14771); 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___ReduceAction422___action, LOCATE_parser, 14773); 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(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_label876: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction422___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14781, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction422].i]) return;
-  return_label877: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction422].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction423___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14785, LOCATE_parser___ReduceAction423___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___ReduceAction423___action, LOCATE_parser, 14793); 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___ReduceAction423___action, LOCATE_parser, 14795); 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(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_label878: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction423___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14803, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction423].i]) return;
-  return_label879: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction423].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction424___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14807, LOCATE_parser___ReduceAction424___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___ReduceAction424___action, LOCATE_parser, 14812); 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_label880: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction424___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14816, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction424].i]) return;
-  return_label881: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction424].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction425___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14820, LOCATE_parser___ReduceAction425___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___ReduceAction425___action, LOCATE_parser, 14828); 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___ReduceAction425___action, LOCATE_parser, 14830); 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(79)) /*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_label882: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction425___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14838, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction425].i]) return;
-  return_label883: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction425].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction426___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14842, LOCATE_parser___ReduceAction426___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___ReduceAction426___action, LOCATE_parser, 14850); 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___ReduceAction426___action, LOCATE_parser, 14852); 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(79)) /*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_label884: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction426___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14860, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction426].i]) return;
-  return_label885: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction426].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction427___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14864, 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, 14869); 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_label886: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction427___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14873, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction427].i]) return;
-  return_label887: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction427].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction428___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14877, LOCATE_parser___ReduceAction428___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___ReduceAction428___action, LOCATE_parser, 14885); 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___ReduceAction428___action, LOCATE_parser, 14887); 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(80)) /*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_label888: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction428___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14895, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction428].i]) return;
-  return_label889: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction428].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction429___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14899, LOCATE_parser___ReduceAction429___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___ReduceAction429___action, LOCATE_parser, 14907); 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___ReduceAction429___action, LOCATE_parser, 14909); 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(80)) /*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_label890: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction429___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14917, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction429].i]) return;
-  return_label891: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction429].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction430___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14921, LOCATE_parser___ReduceAction430___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___ReduceAction430___action, LOCATE_parser, 14929); 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___ReduceAction430___action, LOCATE_parser, 14931); 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(80)) /*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_label892: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction430___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14939, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction430].i]) return;
-  return_label893: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction430].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction431___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14943, 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, 14948); 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_label894: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction431___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14952, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction431].i]) return;
-  return_label895: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction431].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction432___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14956, LOCATE_parser___ReduceAction432___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___ReduceAction432___action, LOCATE_parser, 14963); 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___ReduceAction432___action, LOCATE_parser, 14965); 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(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_label896: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction432___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14973, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction432].i]) return;
-  return_label897: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction432].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction433___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14977, LOCATE_parser___ReduceAction433___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___ReduceAction433___action, LOCATE_parser, 14984); 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___ReduceAction433___action, LOCATE_parser, 14986); 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(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_label898: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction433___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14994, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction433].i]) return;
-  return_label899: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction433].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction434___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14998, LOCATE_parser___ReduceAction434___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___ReduceAction434___action, LOCATE_parser, 15003); 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_label900: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction434___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15007, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction434].i]) return;
-  return_label901: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction434].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction435___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15011, LOCATE_parser___ReduceAction435___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___ReduceAction435___action, LOCATE_parser, 15020); 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___ReduceAction435___action, LOCATE_parser, 15022); 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___ReduceAction435___action, LOCATE_parser, 15024); 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(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_label902: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction435___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15041, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction435].i]) return;
-  return_label903: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction435].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction436___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15045, LOCATE_parser___ReduceAction436___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___ReduceAction436___action, LOCATE_parser, 15053); 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___ReduceAction436___action, LOCATE_parser, 15055); 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(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_label904: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction436___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15063, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction436].i]) return;
-  return_label905: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction436].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction437___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15067, LOCATE_parser___ReduceAction437___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___ReduceAction437___action, LOCATE_parser, 15074); 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(83)) /*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_label906: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction437___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15082, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction437].i]) return;
-  return_label907: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction437].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction438___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15086, LOCATE_parser___ReduceAction438___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___ReduceAction438___action, LOCATE_parser, 15097); 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___ReduceAction438___action, LOCATE_parser, 15099); 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___ReduceAction438___action, LOCATE_parser, 15101); 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_label908: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction438___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15118, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction438].i]) return;
-  return_label909: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction438].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction439___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15122, LOCATE_parser___ReduceAction439___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___ReduceAction439___action, LOCATE_parser, 15132); 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___ReduceAction439___action, LOCATE_parser, 15134); 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_label910: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction439___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15151, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction439].i]) return;
-  return_label911: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction439].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction440___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15155, LOCATE_parser___ReduceAction440___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___ReduceAction440___action, LOCATE_parser, 15162); 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___ReduceAction440___action, LOCATE_parser, 15164); 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_label912: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction440___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15180, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction440].i]) return;
-  return_label913: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction440].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction441___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15184, LOCATE_parser___ReduceAction441___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___ReduceAction441___action, LOCATE_parser, 15192); 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___ReduceAction441___action, LOCATE_parser, 15194); 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___ReduceAction441___action, LOCATE_parser, 15196); 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_label914: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction441___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15212, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction441].i]) return;
-  return_label915: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction441].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction442___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15216, LOCATE_parser___ReduceAction442___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___ReduceAction442___action, LOCATE_parser, 15226); 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___ReduceAction442___action, LOCATE_parser, 15228); 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___ReduceAction442___action, LOCATE_parser, 15230); 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_label916: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction442___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15246, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction442].i]) return;
-  return_label917: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction442].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction443___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15250, LOCATE_parser___ReduceAction443___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___ReduceAction443___action, LOCATE_parser, 15259); 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___ReduceAction443___action, LOCATE_parser, 15261); 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_label918: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction443___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15277, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction443].i]) return;
-  return_label919: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction443].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction444___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15281, LOCATE_parser___ReduceAction444___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___ReduceAction444___action, LOCATE_parser, 15293); 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___ReduceAction444___action, LOCATE_parser, 15295); 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___ReduceAction444___action, LOCATE_parser, 15297); 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___ReduceAction444___action, LOCATE_parser, 15299); 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(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_label920: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction444___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15316, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction444].i]) return;
-  return_label921: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction444].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction445___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15320, LOCATE_parser___ReduceAction445___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___ReduceAction445___action, LOCATE_parser, 15325); 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(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_label922: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction445___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15332, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction445].i]) return;
-  return_label923: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction445].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction446___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15336, LOCATE_parser___ReduceAction446___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___ReduceAction446___action, LOCATE_parser, 15341); 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(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_label924: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction446___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15348, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction446].i]) return;
-  return_label925: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction446].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction447___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15352, LOCATE_parser___ReduceAction447___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___ReduceAction447___action, LOCATE_parser, 15357); 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(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_label926: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction447___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15364, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction447].i]) return;
-  return_label927: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction447].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction448___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15368, LOCATE_parser___ReduceAction448___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___ReduceAction448___action, LOCATE_parser, 15373); 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(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_label928: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction448___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15380, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction448].i]) return;
-  return_label929: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction448].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction449___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15384, LOCATE_parser___ReduceAction449___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___ReduceAction449___action, LOCATE_parser, 15389); 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(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_label930: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction449___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15396, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction449].i]) return;
-  return_label931: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction449].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction450___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15400, LOCATE_parser___ReduceAction450___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___ReduceAction450___action, LOCATE_parser, 15405); 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(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_label932: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction450___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15412, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction450].i]) return;
-  return_label933: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction450].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction451___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15416, LOCATE_parser___ReduceAction451___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___ReduceAction451___action, LOCATE_parser, 15421); 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(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_label934: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction451___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15428, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction451].i]) return;
-  return_label935: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction451].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction452___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15432, LOCATE_parser___ReduceAction452___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___ReduceAction452___action, LOCATE_parser, 15437); 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(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_label936: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction452___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15444, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction452].i]) return;
-  return_label937: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction452].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction453___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15448, LOCATE_parser___ReduceAction453___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___ReduceAction453___action, LOCATE_parser, 15453); 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_label938: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction453___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15457, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction453].i]) return;
-  return_label939: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction453].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction454___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15461, LOCATE_parser___ReduceAction454___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___ReduceAction454___action, LOCATE_parser, 15468); 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(83)) /*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_label940: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction454___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15472, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction454].i]) return;
-  return_label941: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction454].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction455___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15476, LOCATE_parser___ReduceAction455___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___ReduceAction455___action, LOCATE_parser, 15490); 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___ReduceAction455___action, LOCATE_parser, 15492); 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___ReduceAction455___action, LOCATE_parser, 15494); 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(83)) /*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_label942: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction455___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15503, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction455].i]) return;
-  return_label943: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction455].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction456___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15507, LOCATE_parser___ReduceAction456___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___ReduceAction456___action, LOCATE_parser, 15512); 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(84)) /*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_label944: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction456___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15516, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction456].i]) return;
-  return_label945: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction456].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction457___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15520, LOCATE_parser___ReduceAction457___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___ReduceAction457___action, LOCATE_parser, 15529); 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(84)) /*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_label946: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction457___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15539, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction457].i]) return;
-  return_label947: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction457].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction458___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15543, LOCATE_parser___ReduceAction458___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___ReduceAction458___action, LOCATE_parser, 15553); 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___ReduceAction458___action, LOCATE_parser, 15555); 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(84)) /*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_label948: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction458___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15572, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction458].i]) return;
-  return_label949: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction458].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction459___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15576, LOCATE_parser___ReduceAction459___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] = NEW_Array_array___Array___init(); /*new Array[Object]*/
-  variable[6] = variable[7];
-  variable[8] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[6] /*listnode2*/); /*new ABlockExpr*/
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((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[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label950: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction459___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15588, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction459].i]) return;
-  return_label951: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction459].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction460___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15592, LOCATE_parser___ReduceAction460___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[7] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[5] /*listnode2*/); /*new ABlockExpr*/
-  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(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_label952: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction460___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15603, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction460].i]) return;
-  return_label953: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction460].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction461___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15607, LOCATE_parser___ReduceAction461___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___ReduceAction461___action, LOCATE_parser, 15612); 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(85)) /*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_label954: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction461___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15616, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction461].i]) return;
-  return_label955: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction461].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction462___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15620, LOCATE_parser___ReduceAction462___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___ReduceAction462___action, LOCATE_parser, 15625); 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(85)) /*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_label956: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction462___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15629, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction462].i]) return;
-  return_label957: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction462].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction463___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15633, LOCATE_parser___ReduceAction463___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___ReduceAction463___action, LOCATE_parser, 15638); 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(85)) /*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_label958: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction463___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15646, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction463].i]) return;
-  return_label959: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction463].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction464___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15650, LOCATE_parser___ReduceAction464___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___ReduceAction464___action, LOCATE_parser, 15656); 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___ReduceAction464___action, LOCATE_parser, 15658); 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(85)) /*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_label960: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction464___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15666, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction464].i]) return;
-  return_label961: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction464].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction465___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15670, 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] /*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___ReduceAction465___action, LOCATE_parser, 15675); 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(85)) /*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, 15683, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction465].i]) return;
-  return_label963: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction465].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction466___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15687, 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] /*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___ReduceAction466___action, LOCATE_parser, 15693); 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, 15695); 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(85)) /*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, 15703, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction466].i]) return;
-  return_label965: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction466].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction467___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15707, LOCATE_parser___ReduceAction467___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___ReduceAction467___action, LOCATE_parser, 15712); 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(85)) /*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_label966: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction467___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15719, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction467].i]) return;
-  return_label967: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction467].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction468___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15723, LOCATE_parser___ReduceAction468___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___ReduceAction468___action, LOCATE_parser, 15728); 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(85)) /*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_label968: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction468___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15736, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction468].i]) return;
-  return_label969: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction468].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction469___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15740, LOCATE_parser___ReduceAction469___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___ReduceAction469___action, LOCATE_parser, 15746); 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___ReduceAction469___action, LOCATE_parser, 15748); 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(85)) /*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_label970: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction469___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15756, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction469].i]) return;
-  return_label971: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction469].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction470___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15760, LOCATE_parser___ReduceAction470___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___ReduceAction470___action, LOCATE_parser, 15765); 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(85)) /*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_label972: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction470___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15769, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction470].i]) return;
-  return_label973: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction470].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction471___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15773, LOCATE_parser___ReduceAction471___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___ReduceAction471___action, LOCATE_parser, 15778); 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(85)) /*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_label974: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction471___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15782, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction471].i]) return;
-  return_label975: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction471].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction472___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15786, LOCATE_parser___ReduceAction472___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___ReduceAction472___action, LOCATE_parser, 15791); 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(85)) /*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_label976: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction472___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15795, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction472].i]) return;
-  return_label977: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction472].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction473___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15799, LOCATE_parser___ReduceAction473___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___ReduceAction473___action, LOCATE_parser, 15804); 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(85)) /*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_label978: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction473___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15808, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction473].i]) return;
-  return_label979: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction473].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction474___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15812, LOCATE_parser___ReduceAction474___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___ReduceAction474___action, LOCATE_parser, 15817); 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(85)) /*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_label980: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction474___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15821, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction474].i]) return;
-  return_label981: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction474].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction475___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15825, 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] = 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___ReduceAction475___action, LOCATE_parser, 15836); 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___ReduceAction475___action, LOCATE_parser, 15838); 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___ReduceAction475___action, LOCATE_parser, 15840); 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(85)) /*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, 15857, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction475].i]) return;
-  return_label983: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction475].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction476___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15861, 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] = 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___ReduceAction476___action, LOCATE_parser, 15871); 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___ReduceAction476___action, LOCATE_parser, 15873); 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(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_label984: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction476___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15890, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction476].i]) return;
-  return_label985: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction476].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction477___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15894, LOCATE_parser___ReduceAction477___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___ReduceAction477___action, LOCATE_parser, 15906); 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___ReduceAction477___action, LOCATE_parser, 15908); 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___ReduceAction477___action, LOCATE_parser, 15910); 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___ReduceAction477___action, LOCATE_parser, 15919); 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(85)) /*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_label986: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction477___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15936, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction477].i]) return;
-  return_label987: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction477].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction478___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15940, LOCATE_parser___ReduceAction478___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___ReduceAction478___action, LOCATE_parser, 15951); 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___ReduceAction478___action, LOCATE_parser, 15953); 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___ReduceAction478___action, LOCATE_parser, 15962); 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(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_label988: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction478___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15979, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction478].i]) return;
-  return_label989: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction478].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction479___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15983, LOCATE_parser___ReduceAction479___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___ReduceAction479___action, LOCATE_parser, 15990); 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___ReduceAction479___action, LOCATE_parser, 15992); 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(85)) /*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_label990: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction479___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16008, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction479].i]) return;
-  return_label991: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction479].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction480___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16012, LOCATE_parser___ReduceAction480___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___ReduceAction480___action, LOCATE_parser, 16020); 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___ReduceAction480___action, LOCATE_parser, 16022); 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___ReduceAction480___action, LOCATE_parser, 16024); 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(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_label992: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction480___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16040, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction480].i]) return;
-  return_label993: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction480].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction481___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16044, LOCATE_parser___ReduceAction481___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___ReduceAction481___action, LOCATE_parser, 16054); 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___ReduceAction481___action, LOCATE_parser, 16056); 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___ReduceAction481___action, LOCATE_parser, 16058); 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(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_label994: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction481___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16074, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction481].i]) return;
-  return_label995: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction481].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction482___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16078, LOCATE_parser___ReduceAction482___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___ReduceAction482___action, LOCATE_parser, 16087); 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___ReduceAction482___action, LOCATE_parser, 16089); 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(85)) /*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_label996: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction482___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16105, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction482].i]) return;
-  return_label997: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction482].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction483___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16109, LOCATE_parser___ReduceAction483___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___ReduceAction483___action, LOCATE_parser, 16115); 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(86)) /*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_label998: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction483___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16122, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction483].i]) return;
-  return_label999: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction483].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction484___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16126, LOCATE_parser___ReduceAction484___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___ReduceAction484___action, LOCATE_parser, 16133); 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___ReduceAction484___action, LOCATE_parser, 16135); 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(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_label1000: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction484___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16149, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction484].i]) return;
-  return_label1001: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction484].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction485___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16153, LOCATE_parser___ReduceAction485___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___ReduceAction485___action, LOCATE_parser, 16161); 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___ReduceAction485___action, LOCATE_parser, 16163); 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___ReduceAction485___action, LOCATE_parser, 16165); 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(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_label1002: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction485___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16175, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction485].i]) return;
-  return_label1003: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction485].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction486___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16179, LOCATE_parser___ReduceAction486___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___ReduceAction486___action, LOCATE_parser, 16188); 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___ReduceAction486___action, LOCATE_parser, 16190); 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___ReduceAction486___action, LOCATE_parser, 16199); 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___ReduceAction486___action, LOCATE_parser, 16201); 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(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_label1004: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction486___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16211, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction486].i]) return;
-  return_label1005: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction486].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction487___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16215, LOCATE_parser___ReduceAction487___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___ReduceAction487___action, LOCATE_parser, 16221); 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___ReduceAction487___action, LOCATE_parser, 16223); 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(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_label1006: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction487___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16234, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction487].i]) return;
-  return_label1007: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction487].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction488___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16238, 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[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___ReduceAction488___action, LOCATE_parser, 16245); 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___ReduceAction488___action, LOCATE_parser, 16247); 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___ReduceAction488___action, LOCATE_parser, 16249); 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(88)) /*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, 16260, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction488].i]) return;
-  return_label1009: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction488].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction489___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16264, LOCATE_parser___ReduceAction489___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___ReduceAction489___action, LOCATE_parser, 16273); 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___ReduceAction489___action, LOCATE_parser, 16275); 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___ReduceAction489___action, LOCATE_parser, 16277); 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___ReduceAction489___action, LOCATE_parser, 16279); 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(88)) /*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_label1010: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction489___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16290, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction489].i]) return;
-  return_label1011: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction489].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction490___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16294, LOCATE_parser___ReduceAction490___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___ReduceAction490___action, LOCATE_parser, 16304); 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___ReduceAction490___action, LOCATE_parser, 16306); 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___ReduceAction490___action, LOCATE_parser, 16308); 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___ReduceAction490___action, LOCATE_parser, 16310); 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___ReduceAction490___action, LOCATE_parser, 16312); 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(88)) /*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_label1012: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction490___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16323, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction490].i]) return;
-  return_label1013: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction490].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction491___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16327, LOCATE_parser___ReduceAction491___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___ReduceAction491___action, LOCATE_parser, 16337); 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___ReduceAction491___action, LOCATE_parser, 16339); 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___ReduceAction491___action, LOCATE_parser, 16341); 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___ReduceAction491___action, LOCATE_parser, 16343); 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(89)) /*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_label1014: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction491___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16353, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction491].i]) return;
-  return_label1015: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction491].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction492___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16357, LOCATE_parser___ReduceAction492___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___ReduceAction492___action, LOCATE_parser, 16366); 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___ReduceAction492___action, LOCATE_parser, 16368); 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___ReduceAction492___action, LOCATE_parser, 16370); 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(89)) /*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_label1016: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction492___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16380, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction492].i]) return;
-  return_label1017: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction492].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction493___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16384, LOCATE_parser___ReduceAction493___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___ReduceAction493___action, LOCATE_parser, 16396); 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___ReduceAction493___action, LOCATE_parser, 16398); 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___ReduceAction493___action, LOCATE_parser, 16400); 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___ReduceAction493___action, LOCATE_parser, 16409); 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___ReduceAction493___action, LOCATE_parser, 16411); 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(89)) /*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_label1018: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction493___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16422, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction493].i]) return;
-  return_label1019: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction493].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction494___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16426, LOCATE_parser___ReduceAction494___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___ReduceAction494___action, LOCATE_parser, 16437); 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___ReduceAction494___action, LOCATE_parser, 16439); 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___ReduceAction494___action, LOCATE_parser, 16448); 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___ReduceAction494___action, LOCATE_parser, 16450); 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(89)) /*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_label1020: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction494___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16461, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction494].i]) return;
-  return_label1021: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction494].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction495___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16465, LOCATE_parser___ReduceAction495___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___ReduceAction495___action, LOCATE_parser, 16474); 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___ReduceAction495___action, LOCATE_parser, 16476); 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___ReduceAction495___action, LOCATE_parser, 16485); 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___ReduceAction495___action, LOCATE_parser, 16487); 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(89)) /*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_label1022: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction495___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16497, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction495].i]) return;
-  return_label1023: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction495].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction496___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16501, LOCATE_parser___ReduceAction496___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___ReduceAction496___action, LOCATE_parser, 16511); 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___ReduceAction496___action, LOCATE_parser, 16513); 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___ReduceAction496___action, LOCATE_parser, 16515); 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___ReduceAction496___action, LOCATE_parser, 16517); 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(89)) /*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_label1024: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction496___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16527, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction496].i]) return;
-  return_label1025: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction496].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction497___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16531, LOCATE_parser___ReduceAction497___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___ReduceAction497___action, LOCATE_parser, 16540); 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___ReduceAction497___action, LOCATE_parser, 16542); 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___ReduceAction497___action, LOCATE_parser, 16544); 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(89)) /*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_label1026: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction497___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16554, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction497].i]) return;
-  return_label1027: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction497].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction498___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16558, LOCATE_parser___ReduceAction498___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___ReduceAction498___action, LOCATE_parser, 16570); 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___ReduceAction498___action, LOCATE_parser, 16572); 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___ReduceAction498___action, LOCATE_parser, 16574); 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___ReduceAction498___action, LOCATE_parser, 16583); 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___ReduceAction498___action, LOCATE_parser, 16585); 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(89)) /*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_label1028: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction498___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16596, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction498].i]) return;
-  return_label1029: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction498].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction499___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16600, LOCATE_parser___ReduceAction499___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___ReduceAction499___action, LOCATE_parser, 16611); 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___ReduceAction499___action, LOCATE_parser, 16613); 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___ReduceAction499___action, LOCATE_parser, 16622); 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___ReduceAction499___action, LOCATE_parser, 16624); 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(89)) /*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_label1030: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction499___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16635, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction499].i]) return;
-  return_label1031: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction499].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction500___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16639, LOCATE_parser___ReduceAction500___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___ReduceAction500___action, LOCATE_parser, 16648); 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___ReduceAction500___action, LOCATE_parser, 16650); 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___ReduceAction500___action, LOCATE_parser, 16659); 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___ReduceAction500___action, LOCATE_parser, 16661); 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(89)) /*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_label1032: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction500___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16671, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction500].i]) return;
-  return_label1033: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction500].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction501___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16675, LOCATE_parser___ReduceAction501___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___ReduceAction501___action, LOCATE_parser, 16681); 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___ReduceAction501___action, LOCATE_parser, 16683); 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(90)) /*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_label1034: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction501___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16691, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction501].i]) return;
-  return_label1035: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction501].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction502___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16695, LOCATE_parser___ReduceAction502___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___ReduceAction502___action, LOCATE_parser, 16707); 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___ReduceAction502___action, LOCATE_parser, 16709); 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___ReduceAction502___action, LOCATE_parser, 16711); 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___ReduceAction502___action, LOCATE_parser, 16713); 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(91)) /*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_label1036: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction502___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16723, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction502].i]) return;
-  return_label1037: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction502].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction503___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16727, LOCATE_parser___ReduceAction503___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___ReduceAction503___action, LOCATE_parser, 16737); 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___ReduceAction503___action, LOCATE_parser, 16739); 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___ReduceAction503___action, LOCATE_parser, 16741); 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___ReduceAction503___action, LOCATE_parser, 16743); 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(92)) /*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_label1038: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction503___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16753, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction503].i]) return;
-  return_label1039: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction503].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction504___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16757, LOCATE_parser___ReduceAction504___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___ReduceAction504___action, LOCATE_parser, 16765); 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___ReduceAction504___action, LOCATE_parser, 16767); 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___ReduceAction504___action, LOCATE_parser, 16769); 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(93)) /*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_label1040: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction504___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16778, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction504].i]) return;
-  return_label1041: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction504].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction505___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16782, LOCATE_parser___ReduceAction505___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___ReduceAction505___action, LOCATE_parser, 16788); 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___ReduceAction505___action, LOCATE_parser, 16790); 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(94)) /*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_label1042: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction505___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16799, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction505].i]) return;
-  return_label1043: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction505].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction506___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16803, 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[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___ReduceAction506___action, LOCATE_parser, 16810); 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___ReduceAction506___action, LOCATE_parser, 16812); 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___ReduceAction506___action, LOCATE_parser, 16814); 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(94)) /*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, 16823, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction506].i]) return;
-  return_label1045: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction506].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction507___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16827, LOCATE_parser___ReduceAction507___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___ReduceAction507___action, LOCATE_parser, 16832); 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(95)) /*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_label1046: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction507___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16836, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction507].i]) return;
-  return_label1047: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction507].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction508___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16840, LOCATE_parser___ReduceAction508___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___ReduceAction508___action, LOCATE_parser, 16852); 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___ReduceAction508___action, LOCATE_parser, 16854); 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___ReduceAction508___action, LOCATE_parser, 16856); 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___ReduceAction508___action, LOCATE_parser, 16865); 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(95)) /*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_label1048: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction508___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16882, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction508].i]) return;
-  return_label1049: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction508].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction509___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16886, LOCATE_parser___ReduceAction509___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___ReduceAction509___action, LOCATE_parser, 16897); 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___ReduceAction509___action, LOCATE_parser, 16899); 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___ReduceAction509___action, LOCATE_parser, 16908); 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(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_label1050: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction509___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16925, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction509].i]) return;
-  return_label1051: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction509].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction510___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16929, LOCATE_parser___ReduceAction510___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___ReduceAction510___action, LOCATE_parser, 16938); 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___ReduceAction510___action, LOCATE_parser, 16940); 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___ReduceAction510___action, LOCATE_parser, 16949); 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(95)) /*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_label1052: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction510___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16965, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction510].i]) return;
-  return_label1053: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction510].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction511___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16969, LOCATE_parser___ReduceAction511___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___ReduceAction511___action, LOCATE_parser, 16974); 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_label1054: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction511___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16978, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction511].i]) return;
-  return_label1055: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction511].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction512___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16982, LOCATE_parser___ReduceAction512___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___ReduceAction512___action, LOCATE_parser, 16994); 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___ReduceAction512___action, LOCATE_parser, 16996); 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___ReduceAction512___action, LOCATE_parser, 16998); 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___ReduceAction512___action, LOCATE_parser, 17007); 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_label1056: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction512___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17024, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction512].i]) return;
-  return_label1057: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction512].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction513___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17028, LOCATE_parser___ReduceAction513___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___ReduceAction513___action, LOCATE_parser, 17039); 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___ReduceAction513___action, LOCATE_parser, 17041); 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___ReduceAction513___action, LOCATE_parser, 17050); 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_label1058: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction513___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17067, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction513].i]) return;
-  return_label1059: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction513].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction514___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17071, LOCATE_parser___ReduceAction514___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___ReduceAction514___action, LOCATE_parser, 17077); 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(97)) /*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_label1060: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction514___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17085, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction514].i]) return;
-  return_label1061: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction514].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction515___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17089, LOCATE_parser___ReduceAction515___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___ReduceAction515___action, LOCATE_parser, 17100); 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___ReduceAction515___action, LOCATE_parser, 17102); 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(97)) /*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_label1062: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction515___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17117, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction515].i]) return;
-  return_label1063: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction515].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction516___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17121, LOCATE_parser___ReduceAction516___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___ReduceAction516___action, LOCATE_parser, 17126); 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_label1064: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction516___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17130, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction516].i]) return;
-  return_label1065: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction516].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction517___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17134, LOCATE_parser___ReduceAction517___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___ReduceAction517___action, LOCATE_parser, 17146); 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___ReduceAction517___action, LOCATE_parser, 17148); 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___ReduceAction517___action, LOCATE_parser, 17150); 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___ReduceAction517___action, LOCATE_parser, 17159); 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(98)) /*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_label1066: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction517___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17176, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction517].i]) return;
-  return_label1067: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction517].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction518___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17180, LOCATE_parser___ReduceAction518___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___ReduceAction518___action, LOCATE_parser, 17191); 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___ReduceAction518___action, LOCATE_parser, 17193); 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___ReduceAction518___action, LOCATE_parser, 17202); 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(98)) /*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_label1068: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction518___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17219, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction518].i]) return;
-  return_label1069: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction518].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction519___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17223, LOCATE_parser___ReduceAction519___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___ReduceAction519___action, LOCATE_parser, 17228); 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_label1070: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction519___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17232, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction519].i]) return;
-  return_label1071: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction519].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction520___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17236, LOCATE_parser___ReduceAction520___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___ReduceAction520___action, LOCATE_parser, 17251); 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___ReduceAction520___action, LOCATE_parser, 17253); 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___ReduceAction520___action, LOCATE_parser, 17255); 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___ReduceAction520___action, LOCATE_parser, 17257); 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___ReduceAction520___action, LOCATE_parser, 17259); 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___ReduceAction520___action, LOCATE_parser, 17261); 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(99)) /*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_label1072: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction520___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17273, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction520].i]) return;
-  return_label1073: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction520].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction521___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17277, LOCATE_parser___ReduceAction521___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___ReduceAction521___action, LOCATE_parser, 17282); 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_label1074: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction521___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17286, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction521].i]) return;
-  return_label1075: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction521].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction522___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17290, 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] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  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___ReduceAction522___action, LOCATE_parser, 17298); 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___ReduceAction522___action, LOCATE_parser, 17300); 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(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_label1076: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction522___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17308, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction522].i]) return;
-  return_label1077: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction522].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction523___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17312, LOCATE_parser___ReduceAction523___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___ReduceAction523___action, LOCATE_parser, 17320); 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___ReduceAction523___action, LOCATE_parser, 17322); 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(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_label1078: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction523___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17330, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction523].i]) return;
-  return_label1079: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction523].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction524___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17334, LOCATE_parser___ReduceAction524___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___ReduceAction524___action, LOCATE_parser, 17339); 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_label1080: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction524___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17343, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction524].i]) return;
-  return_label1081: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction524].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction525___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17347, LOCATE_parser___ReduceAction525___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___ReduceAction525___action, LOCATE_parser, 17354); 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___ReduceAction525___action, LOCATE_parser, 17356); 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(101)) /*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_label1082: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction525___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17364, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction525].i]) return;
-  return_label1083: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction525].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction526___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17368, LOCATE_parser___ReduceAction526___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___ReduceAction526___action, LOCATE_parser, 17373); 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_label1084: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction526___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17377, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction526].i]) return;
-  return_label1085: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction526].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction527___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17381, LOCATE_parser___ReduceAction527___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___ReduceAction527___action, LOCATE_parser, 17389); 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___ReduceAction527___action, LOCATE_parser, 17391); 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(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_label1086: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction527___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17399, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction527].i]) return;
-  return_label1087: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction527].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction528___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17403, LOCATE_parser___ReduceAction528___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___ReduceAction528___action, LOCATE_parser, 17411); 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___ReduceAction528___action, LOCATE_parser, 17413); 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(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_label1088: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction528___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17421, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction528].i]) return;
-  return_label1089: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction528].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction529___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17425, LOCATE_parser___ReduceAction529___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___ReduceAction529___action, LOCATE_parser, 17433); 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___ReduceAction529___action, LOCATE_parser, 17435); 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(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_label1090: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction529___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17443, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction529].i]) return;
-  return_label1091: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction529].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction530___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17447, LOCATE_parser___ReduceAction530___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___ReduceAction530___action, LOCATE_parser, 17455); 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___ReduceAction530___action, LOCATE_parser, 17457); 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(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_label1092: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction530___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17465, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction530].i]) return;
-  return_label1093: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction530].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction531___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17469, LOCATE_parser___ReduceAction531___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___ReduceAction531___action, LOCATE_parser, 17477); 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___ReduceAction531___action, LOCATE_parser, 17479); 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(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_label1094: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction531___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17487, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction531].i]) return;
-  return_label1095: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction531].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction532___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17491, LOCATE_parser___ReduceAction532___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___ReduceAction532___action, LOCATE_parser, 17499); 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___ReduceAction532___action, LOCATE_parser, 17501); 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(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_label1096: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction532___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17509, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction532].i]) return;
-  return_label1097: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction532].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction533___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17513, LOCATE_parser___ReduceAction533___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___ReduceAction533___action, LOCATE_parser, 17521); 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___ReduceAction533___action, LOCATE_parser, 17523); 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(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_label1098: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction533___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17531, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction533].i]) return;
-  return_label1099: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction533].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction534___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17535, LOCATE_parser___ReduceAction534___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___ReduceAction534___action, LOCATE_parser, 17543); 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___ReduceAction534___action, LOCATE_parser, 17545); 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(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_label1100: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction534___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17553, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction534].i]) return;
-  return_label1101: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction534].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction535___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17557, LOCATE_parser___ReduceAction535___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___ReduceAction535___action, LOCATE_parser, 17565); 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___ReduceAction535___action, LOCATE_parser, 17567); 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(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_label1102: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction535___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17575, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction535].i]) return;
-  return_label1103: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction535].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction536___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17579, LOCATE_parser___ReduceAction536___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___ReduceAction536___action, LOCATE_parser, 17584); 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_label1104: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction536___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17588, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction536].i]) return;
-  return_label1105: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction536].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction537___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17592, LOCATE_parser___ReduceAction537___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___ReduceAction537___action, LOCATE_parser, 17600); 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___ReduceAction537___action, LOCATE_parser, 17602); 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(103)) /*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_label1106: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction537___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17610, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction537].i]) return;
-  return_label1107: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction537].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction538___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17614, LOCATE_parser___ReduceAction538___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___ReduceAction538___action, LOCATE_parser, 17622); 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___ReduceAction538___action, LOCATE_parser, 17624); 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(103)) /*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_label1108: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction538___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17632, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction538].i]) return;
-  return_label1109: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction538].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction539___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17636, LOCATE_parser___ReduceAction539___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___ReduceAction539___action, LOCATE_parser, 17641); 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_label1110: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction539___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17645, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction539].i]) return;
-  return_label1111: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction539].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction540___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17649, 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[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___ReduceAction540___action, LOCATE_parser, 17657); 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___ReduceAction540___action, LOCATE_parser, 17659); 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(104)) /*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, 17667, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction540].i]) return;
-  return_label1113: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction540].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction541___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17671, LOCATE_parser___ReduceAction541___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___ReduceAction541___action, LOCATE_parser, 17679); 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___ReduceAction541___action, LOCATE_parser, 17681); 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(104)) /*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_label1114: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction541___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17689, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction541].i]) return;
-  return_label1115: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction541].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction542___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17693, 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[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___ReduceAction542___action, LOCATE_parser, 17701); 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___ReduceAction542___action, LOCATE_parser, 17703); 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(104)) /*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, 17711, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction542].i]) return;
-  return_label1117: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction542].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction543___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17715, LOCATE_parser___ReduceAction543___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___ReduceAction543___action, LOCATE_parser, 17720); 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_label1118: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction543___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17724, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction543].i]) return;
-  return_label1119: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction543].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction544___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17728, LOCATE_parser___ReduceAction544___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___ReduceAction544___action, LOCATE_parser, 17735); 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___ReduceAction544___action, LOCATE_parser, 17737); 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(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_label1120: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction544___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17745, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction544].i]) return;
-  return_label1121: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction544].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction545___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17749, LOCATE_parser___ReduceAction545___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___ReduceAction545___action, LOCATE_parser, 17756); 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___ReduceAction545___action, LOCATE_parser, 17758); 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(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_label1122: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction545___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17766, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction545].i]) return;
-  return_label1123: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction545].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction546___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17770, LOCATE_parser___ReduceAction546___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___ReduceAction546___action, LOCATE_parser, 17775); 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(106)) /*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_label1124: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction546___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17779, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction546].i]) return;
-  return_label1125: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction546].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction547___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17783, LOCATE_parser___ReduceAction547___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___ReduceAction547___action, LOCATE_parser, 17792); 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___ReduceAction547___action, LOCATE_parser, 17794); 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___ReduceAction547___action, LOCATE_parser, 17796); 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(106)) /*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_label1126: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction547___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17813, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction547].i]) return;
-  return_label1127: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction547].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction548___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17817, LOCATE_parser___ReduceAction548___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___ReduceAction548___action, LOCATE_parser, 17825); 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___ReduceAction548___action, LOCATE_parser, 17827); 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(107)) /*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_label1128: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction548___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17835, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction548].i]) return;
-  return_label1129: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction548].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction549___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17839, LOCATE_parser___ReduceAction549___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___ReduceAction549___action, LOCATE_parser, 17846); 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(107)) /*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_label1130: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction549___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17854, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction549].i]) return;
-  return_label1131: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction549].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction550___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17858, LOCATE_parser___ReduceAction550___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___ReduceAction550___action, LOCATE_parser, 17869); 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___ReduceAction550___action, LOCATE_parser, 17871); 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___ReduceAction550___action, LOCATE_parser, 17873); 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(107)) /*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_label1132: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction550___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17890, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction550].i]) return;
-  return_label1133: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction550].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction551___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17894, LOCATE_parser___ReduceAction551___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___ReduceAction551___action, LOCATE_parser, 17904); 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___ReduceAction551___action, LOCATE_parser, 17906); 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(107)) /*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_label1134: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction551___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17923, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction551].i]) return;
-  return_label1135: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction551].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction552___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17927, LOCATE_parser___ReduceAction552___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___ReduceAction552___action, LOCATE_parser, 17934); 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___ReduceAction552___action, LOCATE_parser, 17936); 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(107)) /*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_label1136: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction552___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17952, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction552].i]) return;
-  return_label1137: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction552].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction553___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17956, LOCATE_parser___ReduceAction553___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___ReduceAction553___action, LOCATE_parser, 17964); 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___ReduceAction553___action, LOCATE_parser, 17966); 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___ReduceAction553___action, LOCATE_parser, 17968); 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(107)) /*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_label1138: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction553___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17984, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction553].i]) return;
-  return_label1139: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction553].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction554___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17988, LOCATE_parser___ReduceAction554___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___ReduceAction554___action, LOCATE_parser, 17998); 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___ReduceAction554___action, LOCATE_parser, 18000); 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___ReduceAction554___action, LOCATE_parser, 18002); 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(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_label1140: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction554___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18018, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction554].i]) return;
-  return_label1141: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction554].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction555___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18022, LOCATE_parser___ReduceAction555___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___ReduceAction555___action, LOCATE_parser, 18031); 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___ReduceAction555___action, LOCATE_parser, 18033); 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(107)) /*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_label1142: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction555___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18049, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction555].i]) return;
-  return_label1143: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction555].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction556___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18053, LOCATE_parser___ReduceAction556___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___ReduceAction556___action, LOCATE_parser, 18065); 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___ReduceAction556___action, LOCATE_parser, 18067); 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___ReduceAction556___action, LOCATE_parser, 18069); 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___ReduceAction556___action, LOCATE_parser, 18071); 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(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_label1144: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction556___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18088, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction556].i]) return;
-  return_label1145: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction556].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction557___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18092, 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[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___ReduceAction557___action, LOCATE_parser, 18097); 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(107)) /*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, 18104, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction557].i]) return;
-  return_label1147: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction557].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction558___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18108, LOCATE_parser___ReduceAction558___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___ReduceAction558___action, LOCATE_parser, 18113); 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(107)) /*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_label1148: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction558___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18120, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction558].i]) return;
-  return_label1149: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction558].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction559___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18124, LOCATE_parser___ReduceAction559___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___ReduceAction559___action, LOCATE_parser, 18129); 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(107)) /*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_label1150: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction559___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18136, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction559].i]) return;
-  return_label1151: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction559].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction560___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18140, LOCATE_parser___ReduceAction560___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___ReduceAction560___action, LOCATE_parser, 18145); 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(107)) /*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_label1152: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction560___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18152, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction560].i]) return;
-  return_label1153: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction560].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction561___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18156, LOCATE_parser___ReduceAction561___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___ReduceAction561___action, LOCATE_parser, 18161); 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(107)) /*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_label1154: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction561___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18168, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction561].i]) return;
-  return_label1155: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction561].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction562___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18172, LOCATE_parser___ReduceAction562___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___ReduceAction562___action, LOCATE_parser, 18177); 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(107)) /*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_label1156: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction562___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18184, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction562].i]) return;
-  return_label1157: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction562].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction563___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18188, LOCATE_parser___ReduceAction563___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___ReduceAction563___action, LOCATE_parser, 18193); 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(107)) /*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_label1158: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction563___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18200, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction563].i]) return;
-  return_label1159: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction563].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction564___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18204, LOCATE_parser___ReduceAction564___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___ReduceAction564___action, LOCATE_parser, 18209); 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(107)) /*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_label1160: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction564___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18216, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction564].i]) return;
-  return_label1161: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction564].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction565___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18220, LOCATE_parser___ReduceAction565___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___ReduceAction565___action, LOCATE_parser, 18225); 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_label1162: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction565___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18229, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction565].i]) return;
-  return_label1163: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction565].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction566___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18233, LOCATE_parser___ReduceAction566___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___ReduceAction566___action, LOCATE_parser, 18247); 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___ReduceAction566___action, LOCATE_parser, 18249); 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___ReduceAction566___action, LOCATE_parser, 18251); 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(107)) /*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_label1164: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction566___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18260, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction566].i]) return;
-  return_label1165: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction566].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction567___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18264, LOCATE_parser___ReduceAction567___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___ReduceAction567___action, LOCATE_parser, 18270); 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(108)) /*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_label1166: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction567___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18278, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction567].i]) return;
-  return_label1167: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction567].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction568___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18282, LOCATE_parser___ReduceAction568___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___ReduceAction568___action, LOCATE_parser, 18287); 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_label1168: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction568___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18291, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction568].i]) return;
-  return_label1169: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction568].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction569___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18295, LOCATE_parser___ReduceAction569___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___ReduceAction569___action, LOCATE_parser, 18307); 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___ReduceAction569___action, LOCATE_parser, 18309); 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___ReduceAction569___action, LOCATE_parser, 18311); 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___ReduceAction569___action, LOCATE_parser, 18320); 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(109)) /*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_label1170: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction569___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18337, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction569].i]) return;
-  return_label1171: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction569].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction570___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18341, LOCATE_parser___ReduceAction570___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___ReduceAction570___action, LOCATE_parser, 18352); 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___ReduceAction570___action, LOCATE_parser, 18354); 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___ReduceAction570___action, LOCATE_parser, 18363); 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(109)) /*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_label1172: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction570___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18380, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction570].i]) return;
-  return_label1173: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction570].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction571___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18384, 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[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___ReduceAction571___action, LOCATE_parser, 18389); 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_label1174: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction571___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18393, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction571].i]) return;
-  return_label1175: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction571].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction572___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18397, LOCATE_parser___ReduceAction572___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___ReduceAction572___action, LOCATE_parser, 18412); 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___ReduceAction572___action, LOCATE_parser, 18414); 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___ReduceAction572___action, LOCATE_parser, 18416); 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___ReduceAction572___action, LOCATE_parser, 18418); 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___ReduceAction572___action, LOCATE_parser, 18420); 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___ReduceAction572___action, LOCATE_parser, 18422); 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(110)) /*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_label1176: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction572___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18434, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction572].i]) return;
-  return_label1177: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction572].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction573___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18438, LOCATE_parser___ReduceAction573___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___ReduceAction573___action, LOCATE_parser, 18443); 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_label1178: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction573___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18447, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction573].i]) return;
-  return_label1179: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction573].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction574___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18451, LOCATE_parser___ReduceAction574___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___ReduceAction574___action, LOCATE_parser, 18459); 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___ReduceAction574___action, LOCATE_parser, 18461); 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(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_label1180: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction574___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18469, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction574].i]) return;
-  return_label1181: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction574].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction575___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18473, LOCATE_parser___ReduceAction575___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___ReduceAction575___action, LOCATE_parser, 18481); 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___ReduceAction575___action, LOCATE_parser, 18483); 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(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_label1182: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction575___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18491, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction575].i]) return;
-  return_label1183: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction575].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction576___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18495, LOCATE_parser___ReduceAction576___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___ReduceAction576___action, LOCATE_parser, 18500); 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_label1184: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction576___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18504, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction576].i]) return;
-  return_label1185: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction576].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction577___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18508, LOCATE_parser___ReduceAction577___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___ReduceAction577___action, LOCATE_parser, 18515); 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___ReduceAction577___action, LOCATE_parser, 18517); 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(112)) /*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_label1186: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction577___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18525, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction577].i]) return;
-  return_label1187: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction577].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction578___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18529, 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, 18534); 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_label1188: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction578___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18538, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction578].i]) return;
-  return_label1189: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction578].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction579___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18542, LOCATE_parser___ReduceAction579___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___ReduceAction579___action, LOCATE_parser, 18550); 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___ReduceAction579___action, LOCATE_parser, 18552); 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(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_label1190: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction579___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18560, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction579].i]) return;
-  return_label1191: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction579].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction580___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18564, LOCATE_parser___ReduceAction580___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___ReduceAction580___action, LOCATE_parser, 18572); 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___ReduceAction580___action, LOCATE_parser, 18574); 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(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_label1192: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction580___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18582, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction580].i]) return;
-  return_label1193: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction580].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction581___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18586, 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, 18594); 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, 18596); 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(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_label1194: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction581___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18604, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction581].i]) return;
-  return_label1195: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction581].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction582___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18608, 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, 18616); 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, 18618); 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(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_label1196: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction582___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18626, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction582].i]) return;
-  return_label1197: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction582].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction583___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18630, LOCATE_parser___ReduceAction583___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___ReduceAction583___action, LOCATE_parser, 18638); 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___ReduceAction583___action, LOCATE_parser, 18640); 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(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_label1198: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction583___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18648, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction583].i]) return;
-  return_label1199: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction583].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction584___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18652, LOCATE_parser___ReduceAction584___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___ReduceAction584___action, LOCATE_parser, 18660); 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___ReduceAction584___action, LOCATE_parser, 18662); 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(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_label1200: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction584___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18670, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction584].i]) return;
-  return_label1201: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction584].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction585___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18674, LOCATE_parser___ReduceAction585___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___ReduceAction585___action, LOCATE_parser, 18682); 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___ReduceAction585___action, LOCATE_parser, 18684); 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(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_label1202: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction585___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18692, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction585].i]) return;
-  return_label1203: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction585].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction586___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18696, 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, 18704); 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, 18706); 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(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_label1204: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction586___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18714, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction586].i]) return;
-  return_label1205: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction586].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction587___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18718, 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, 18726); 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___ReduceAction587___action, LOCATE_parser, 18728); 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(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_label1206: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction587___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18736, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction587].i]) return;
-  return_label1207: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction587].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction588___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18740, LOCATE_parser___ReduceAction588___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___ReduceAction588___action, LOCATE_parser, 18745); 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_label1208: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction588___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18749, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction588].i]) return;
-  return_label1209: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction588].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction589___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18753, 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, 18761); 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, 18763); 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(114)) /*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, 18771, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction589].i]) return;
-  return_label1211: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction589].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction590___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18775, 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, 18783); 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, 18785); 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(114)) /*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, 18793, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction590].i]) return;
-  return_label1213: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction590].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction591___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18797, LOCATE_parser___ReduceAction591___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___ReduceAction591___action, LOCATE_parser, 18802); 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_label1214: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction591___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18806, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction591].i]) return;
-  return_label1215: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction591].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction592___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18810, 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, 18818); 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, 18820); 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(115)) /*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, 18828, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction592].i]) return;
-  return_label1217: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction592].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction593___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18832, 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, 18840); 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, 18842); 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(115)) /*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, 18850, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction593].i]) return;
-  return_label1219: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction593].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction594___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18854, 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, 18862); 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___ReduceAction594___action, LOCATE_parser, 18864); 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(115)) /*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, 18872, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction594].i]) return;
-  return_label1221: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction594].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction595___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18876, 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, 18881); 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_label1222: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction595___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18885, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction595].i]) return;
-  return_label1223: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction595].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction596___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18889, LOCATE_parser___ReduceAction596___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___ReduceAction596___action, LOCATE_parser, 18896); 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___ReduceAction596___action, LOCATE_parser, 18898); 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(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_label1224: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction596___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18906, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction596].i]) return;
-  return_label1225: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction596].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction597___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18910, LOCATE_parser___ReduceAction597___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___ReduceAction597___action, LOCATE_parser, 18917); 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___ReduceAction597___action, LOCATE_parser, 18919); 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(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_label1226: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction597___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18927, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction597].i]) return;
-  return_label1227: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction597].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction598___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18931, 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, 18936); 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(117)) /*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, 18940, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction598].i]) return;
-  return_label1229: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction598].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction599___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18944, LOCATE_parser___ReduceAction599___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___ReduceAction599___action, LOCATE_parser, 18953); 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___ReduceAction599___action, LOCATE_parser, 18955); 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___ReduceAction599___action, LOCATE_parser, 18957); 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(117)) /*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_label1230: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction599___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18974, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction599].i]) return;
-  return_label1231: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction599].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction600___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18978, LOCATE_parser___ReduceAction600___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___ReduceAction600___action, LOCATE_parser, 18984); 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___ReduceAction600___action, LOCATE_parser, 18986); 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(118)) /*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_label1232: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction600___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18994, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction600].i]) return;
-  return_label1233: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction600].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction601___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18998, LOCATE_parser___ReduceAction601___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___ReduceAction601___action, LOCATE_parser, 19007); 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___ReduceAction601___action, LOCATE_parser, 19009); 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___ReduceAction601___action, LOCATE_parser, 19011); 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(118)) /*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_label1234: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction601___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19028, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction601].i]) return;
-  return_label1235: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction601].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction602___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19032, LOCATE_parser___ReduceAction602___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___ReduceAction602___action, LOCATE_parser, 19039); 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___ReduceAction602___action, LOCATE_parser, 19041); 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(118)) /*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_label1236: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction602___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19057, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction602].i]) return;
-  return_label1237: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction602].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction603___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19061, LOCATE_parser___ReduceAction603___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___ReduceAction603___action, LOCATE_parser, 19069); 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___ReduceAction603___action, LOCATE_parser, 19071); 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___ReduceAction603___action, LOCATE_parser, 19073); 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(118)) /*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_label1238: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction603___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19089, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction603].i]) return;
-  return_label1239: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction603].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction604___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19093, LOCATE_parser___ReduceAction604___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___ReduceAction604___action, LOCATE_parser, 19101); 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___ReduceAction604___action, LOCATE_parser, 19103); 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___ReduceAction604___action, LOCATE_parser, 19105); 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(118)) /*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_label1240: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction604___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19121, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction604].i]) return;
-  return_label1241: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction604].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction605___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19125, LOCATE_parser___ReduceAction605___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___ReduceAction605___action, LOCATE_parser, 19137); 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___ReduceAction605___action, LOCATE_parser, 19139); 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___ReduceAction605___action, LOCATE_parser, 19141); 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___ReduceAction605___action, LOCATE_parser, 19143); 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(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_label1242: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction605___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19160, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction605].i]) return;
-  return_label1243: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction605].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction606___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19164, LOCATE_parser___ReduceAction606___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___ReduceAction606___action, LOCATE_parser, 19169); 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(118)) /*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_label1244: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction606___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19176, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction606].i]) return;
-  return_label1245: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction606].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction607___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19180, LOCATE_parser___ReduceAction607___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___ReduceAction607___action, LOCATE_parser, 19185); 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(118)) /*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_label1246: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction607___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19192, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction607].i]) return;
-  return_label1247: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction607].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction608___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19196, LOCATE_parser___ReduceAction608___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___ReduceAction608___action, LOCATE_parser, 19201); 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(118)) /*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_label1248: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction608___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19208, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction608].i]) return;
-  return_label1249: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction608].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction609___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19212, LOCATE_parser___ReduceAction609___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___ReduceAction609___action, LOCATE_parser, 19217); 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(118)) /*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_label1250: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction609___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19224, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction609].i]) return;
-  return_label1251: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction609].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction610___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19228, LOCATE_parser___ReduceAction610___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___ReduceAction610___action, LOCATE_parser, 19233); 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(118)) /*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_label1252: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction610___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19240, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction610].i]) return;
-  return_label1253: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction610].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction611___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19244, LOCATE_parser___ReduceAction611___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___ReduceAction611___action, LOCATE_parser, 19249); 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(118)) /*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_label1254: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction611___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19256, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction611].i]) return;
-  return_label1255: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction611].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction612___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19260, LOCATE_parser___ReduceAction612___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___ReduceAction612___action, LOCATE_parser, 19265); 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(118)) /*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_label1256: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction612___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19272, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction612].i]) return;
-  return_label1257: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction612].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction613___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19276, LOCATE_parser___ReduceAction613___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___ReduceAction613___action, LOCATE_parser, 19281); 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(118)) /*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_label1258: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction613___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19288, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction613].i]) return;
-  return_label1259: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction613].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction614___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19292, LOCATE_parser___ReduceAction614___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___ReduceAction614___action, LOCATE_parser, 19297); 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_label1260: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction614___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19301, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction614].i]) return;
-  return_label1261: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction614].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction615___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19305, LOCATE_parser___ReduceAction615___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___ReduceAction615___action, LOCATE_parser, 19319); 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___ReduceAction615___action, LOCATE_parser, 19321); 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___ReduceAction615___action, LOCATE_parser, 19323); 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(118)) /*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_label1262: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction615___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19332, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction615].i]) return;
-  return_label1263: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction615].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction616___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19336, LOCATE_parser___ReduceAction616___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___ReduceAction616___action, LOCATE_parser, 19343); 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(119)) /*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_label1264: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction616___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19347, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction616].i]) return;
-  return_label1265: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction616].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction617___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19351, LOCATE_parser___ReduceAction617___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(119)) /*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_label1266: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction617___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19359, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction617].i]) return;
-  return_label1267: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction617].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction618___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19363, LOCATE_parser___ReduceAction618___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___ReduceAction618___action, LOCATE_parser, 19368); 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(120)) /*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_label1268: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction618___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19372, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction618].i]) return;
-  return_label1269: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction618].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction619___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19376, LOCATE_parser___ReduceAction619___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___ReduceAction619___action, LOCATE_parser, 19388); 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___ReduceAction619___action, LOCATE_parser, 19390); 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___ReduceAction619___action, LOCATE_parser, 19392); 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___ReduceAction619___action, LOCATE_parser, 19401); 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(120)) /*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_label1270: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction619___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19418, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction619].i]) return;
-  return_label1271: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction619].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction620___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19422, LOCATE_parser___ReduceAction620___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___ReduceAction620___action, LOCATE_parser, 19433); 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___ReduceAction620___action, LOCATE_parser, 19435); 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___ReduceAction620___action, LOCATE_parser, 19444); 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(120)) /*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_label1272: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction620___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19461, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction620].i]) return;
-  return_label1273: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction620].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction621___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19465, LOCATE_parser___ReduceAction621___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___ReduceAction621___action, LOCATE_parser, 19470); 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(121)) /*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_label1274: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction621___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19474, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction621].i]) return;
-  return_label1275: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction621].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction622___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19478, LOCATE_parser___ReduceAction622___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___ReduceAction622___action, LOCATE_parser, 19490); 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___ReduceAction622___action, LOCATE_parser, 19492); 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___ReduceAction622___action, LOCATE_parser, 19494); 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___ReduceAction622___action, LOCATE_parser, 19503); 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(121)) /*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_label1276: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction622___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19520, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction622].i]) return;
-  return_label1277: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction622].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction623___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19524, LOCATE_parser___ReduceAction623___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___ReduceAction623___action, LOCATE_parser, 19535); 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___ReduceAction623___action, LOCATE_parser, 19537); 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___ReduceAction623___action, LOCATE_parser, 19546); 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(121)) /*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_label1278: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction623___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19563, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction623].i]) return;
-  return_label1279: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction623].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction624___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19567, LOCATE_parser___ReduceAction624___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___ReduceAction624___action, LOCATE_parser, 19573); 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(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_label1280: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction624___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19580, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction624].i]) return;
-  return_label1281: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction624].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction625___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19584, LOCATE_parser___ReduceAction625___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___ReduceAction625___action, LOCATE_parser, 19591); 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___ReduceAction625___action, LOCATE_parser, 19593); 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(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_label1282: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction625___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19607, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction625].i]) return;
-  return_label1283: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction625].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction626___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19611, LOCATE_parser___ReduceAction626___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___ReduceAction626___action, LOCATE_parser, 19617); 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(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_label1284: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction626___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19624, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction626].i]) return;
-  return_label1285: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction626].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction627___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19628, LOCATE_parser___ReduceAction627___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___ReduceAction627___action, LOCATE_parser, 19635); 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___ReduceAction627___action, LOCATE_parser, 19637); 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(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_label1286: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction627___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19651, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction627].i]) return;
-  return_label1287: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction627].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction628___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19655, LOCATE_parser___ReduceAction628___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___ReduceAction628___action, LOCATE_parser, 19661); 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(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_label1288: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction628___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19668, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction628].i]) return;
-  return_label1289: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction628].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction629___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19672, LOCATE_parser___ReduceAction629___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___ReduceAction629___action, LOCATE_parser, 19679); 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___ReduceAction629___action, LOCATE_parser, 19681); 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(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_label1290: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction629___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19695, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction629].i]) return;
-  return_label1291: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction629].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction630___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19699, LOCATE_parser___ReduceAction630___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___ReduceAction630___action, LOCATE_parser, 19705); 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(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_label1292: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction630___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19712, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction630].i]) return;
-  return_label1293: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction630].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction631___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19716, LOCATE_parser___ReduceAction631___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___ReduceAction631___action, LOCATE_parser, 19723); 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___ReduceAction631___action, LOCATE_parser, 19725); 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(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_label1294: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction631___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19739, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction631].i]) return;
-  return_label1295: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction631].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction632___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19743, LOCATE_parser___ReduceAction632___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___ReduceAction632___action, LOCATE_parser, 19749); 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(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_label1296: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction632___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19756, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction632].i]) return;
-  return_label1297: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction632].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction633___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19760, LOCATE_parser___ReduceAction633___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___ReduceAction633___action, LOCATE_parser, 19767); 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___ReduceAction633___action, LOCATE_parser, 19769); 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(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_label1298: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction633___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19783, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction633].i]) return;
-  return_label1299: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction633].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction634___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19787, 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[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___ReduceAction634___action, LOCATE_parser, 19793); 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(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_label1300: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction634___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19800, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction634].i]) return;
-  return_label1301: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction634].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction635___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19804, 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[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___ReduceAction635___action, LOCATE_parser, 19811); 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___ReduceAction635___action, LOCATE_parser, 19813); 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(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_label1302: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction635___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19827, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction635].i]) return;
-  return_label1303: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction635].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction636___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19831, 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[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___ReduceAction636___action, LOCATE_parser, 19837); 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(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_label1304: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction636___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19844, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction636].i]) return;
-  return_label1305: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction636].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction637___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19848, 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[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___ReduceAction637___action, LOCATE_parser, 19855); 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___ReduceAction637___action, LOCATE_parser, 19857); 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(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_label1306: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction637___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19871, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction637].i]) return;
-  return_label1307: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction637].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction638___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19875, 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[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___ReduceAction638___action, LOCATE_parser, 19881); 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(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_label1308: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction638___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19888, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction638].i]) return;
-  return_label1309: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction638].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction639___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19892, LOCATE_parser___ReduceAction639___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___ReduceAction639___action, LOCATE_parser, 19899); 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___ReduceAction639___action, LOCATE_parser, 19901); 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(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_label1310: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction639___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19915, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction639].i]) return;
-  return_label1311: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction639].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction640___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19919, LOCATE_parser___ReduceAction640___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___ReduceAction640___action, LOCATE_parser, 19925); 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(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_label1312: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction640___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19932, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction640].i]) return;
-  return_label1313: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction640].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction641___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19936, LOCATE_parser___ReduceAction641___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___ReduceAction641___action, LOCATE_parser, 19943); 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___ReduceAction641___action, LOCATE_parser, 19945); 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(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_label1314: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction641___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19959, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction641].i]) return;
-  return_label1315: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction641].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction642___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19963, LOCATE_parser___ReduceAction642___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___ReduceAction642___action, LOCATE_parser, 19969); 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_label1316: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction642___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19976, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction642].i]) return;
-  return_label1317: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction642].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction643___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19980, LOCATE_parser___ReduceAction643___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___ReduceAction643___action, LOCATE_parser, 19987); 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___ReduceAction643___action, LOCATE_parser, 19989); 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_label1318: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction643___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20003, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction643].i]) return;
-  return_label1319: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction643].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction644___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20007, LOCATE_parser___ReduceAction644___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___ReduceAction644___action, LOCATE_parser, 20013); 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(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_label1320: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction644___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20024, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction644].i]) return;
-  return_label1321: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction644].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction645___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20028, LOCATE_parser___ReduceAction645___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___ReduceAction645___action, LOCATE_parser, 20035); 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___ReduceAction645___action, LOCATE_parser, 20037); 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(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_label1322: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction645___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20055, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction645].i]) return;
-  return_label1323: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction645].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction646___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20059, LOCATE_parser___ReduceAction646___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___ReduceAction646___action, LOCATE_parser, 20065); 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(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_label1324: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction646___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20072, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction646].i]) return;
-  return_label1325: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction646].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction647___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20076, LOCATE_parser___ReduceAction647___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___ReduceAction647___action, LOCATE_parser, 20083); 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___ReduceAction647___action, LOCATE_parser, 20085); 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(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_label1326: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction647___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20099, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction647].i]) return;
-  return_label1327: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction647].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction648___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20103, LOCATE_parser___ReduceAction648___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___ReduceAction648___action, LOCATE_parser, 20109); 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(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_label1328: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction648___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20116, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction648].i]) return;
-  return_label1329: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction648].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction649___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20120, LOCATE_parser___ReduceAction649___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___ReduceAction649___action, LOCATE_parser, 20127); 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___ReduceAction649___action, LOCATE_parser, 20129); 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(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_label1330: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction649___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20143, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction649].i]) return;
-  return_label1331: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction649].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction650___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20147, LOCATE_parser___ReduceAction650___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___ReduceAction650___action, LOCATE_parser, 20153); 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(135)) /*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_label1332: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction650___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20160, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction650].i]) return;
-  return_label1333: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction650].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction651___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20164, LOCATE_parser___ReduceAction651___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___ReduceAction651___action, LOCATE_parser, 20171); 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___ReduceAction651___action, LOCATE_parser, 20173); 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(135)) /*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_label1334: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction651___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20187, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction651].i]) return;
-  return_label1335: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction651].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction652___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20191, LOCATE_parser___ReduceAction652___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___ReduceAction652___action, LOCATE_parser, 20197); 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(136)) /*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_label1336: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction652___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20204, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction652].i]) return;
-  return_label1337: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction652].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction653___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20208, LOCATE_parser___ReduceAction653___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___ReduceAction653___action, LOCATE_parser, 20215); 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___ReduceAction653___action, LOCATE_parser, 20217); 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(136)) /*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_label1338: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction653___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20231, 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(variable[0])->vft[INIT_TABLE_POS_ReduceAction653].i]) return;
-  return_label1339: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction653].i] = 1;
-  tracehead = trace.prev;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ComputeProdLocationVisitor___init[] = "parser::ComputeProdLocationVisitor::init";
+void parser___ComputeProdLocationVisitor___init(val_t p0, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___ComputeProdLocationVisitor].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos2]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1553;
+  fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:1553 */
+  CALL_parser___parser_prod___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+static const char LOCATE_parser___ReduceAction___action[] = "parser::ReduceAction::action";
+void parser___ReduceAction___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1558;
+  fra.me.meth = LOCATE_parser___ReduceAction___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  /* parser/parser.nit:1558 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser, 1558);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction___concat[] = "parser::ReduceAction::concat";
+val_t parser___ReduceAction___concat(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1559;
+  fra.me.meth = LOCATE_parser___ReduceAction___concat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser.nit:1561 */
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[0] = fra.me.REG[2];
+    goto label1;
+  }
+  /* parser/parser.nit:1562 */
+  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1563 */
+  fra.me.REG[0] = fra.me.REG[1];
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___ReduceAction___init[] = "parser::ReduceAction::init";
+void parser___ReduceAction___init(val_t p0, val_t p1, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___ReduceAction].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos3]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser.nit:1566 */
+  ATTR_parser___ReduceAction____goto(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
+static const char LOCATE_parser___ReduceAction0___action[] = "parser::ReduceAction0::(parser::ReduceAction::action)";
+void parser___ReduceAction0___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1571;
+  fra.me.meth = LOCATE_parser___ReduceAction0___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1573 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1574 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1575 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1576 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1577 */
+  fra.me.REG[5] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
+  /* parser/parser.nit:1583 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:1584 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1584);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1___action[] = "parser::ReduceAction1::(parser::ReduceAction::action)";
+void parser___ReduceAction1___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1589;
+  fra.me.meth = LOCATE_parser___ReduceAction1___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1591 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1592 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1593 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1594 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1595 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1597 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1597);
+  }
+  /* parser/parser.nit:1598 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1604 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1605 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1605);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction2___action[] = "parser::ReduceAction2::(parser::ReduceAction::action)";
+void parser___ReduceAction2___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1610;
+  fra.me.meth = LOCATE_parser___ReduceAction2___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1612 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1613 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1614 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1615 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1616 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1618 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1618);
+  }
+  /* parser/parser.nit:1619 */
+  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:1620 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1626 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1627 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1627);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction3___action[] = "parser::ReduceAction3::(parser::ReduceAction::action)";
+void parser___ReduceAction3___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1632;
+  fra.me.meth = LOCATE_parser___ReduceAction3___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1634 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1635 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1636 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1637 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1638 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1639 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1641 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1641);
+  }
+  /* parser/parser.nit:1643 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1643);
+  }
+  /* parser/parser.nit:1644 */
+  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:1645 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1651 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1652 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1652);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction4___action[] = "parser::ReduceAction4::(parser::ReduceAction::action)";
+void parser___ReduceAction4___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1657;
+  fra.me.meth = LOCATE_parser___ReduceAction4___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1659 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1660 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1661 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1662 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1663 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1665 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1665);
+  }
+  /* parser/parser.nit:1666 */
+  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:1667 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1673 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1674 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1674);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction5___action[] = "parser::ReduceAction5::(parser::ReduceAction::action)";
+void parser___ReduceAction5___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1679;
+  fra.me.meth = LOCATE_parser___ReduceAction5___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1681 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1682 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1683 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1684 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1685 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1686 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1688 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1688);
+  }
+  /* parser/parser.nit:1690 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1690);
+  }
+  /* parser/parser.nit:1691 */
+  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:1692 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1698 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1699 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1699);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction6___action[] = "parser::ReduceAction6::(parser::ReduceAction::action)";
+void parser___ReduceAction6___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1704;
+  fra.me.meth = LOCATE_parser___ReduceAction6___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1706 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1707 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1708 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1709 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1710 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1711 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1713 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1713);
+  }
+  /* parser/parser.nit:1714 */
+  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:1716 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1716);
+  }
+  /* parser/parser.nit:1717 */
+  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:1718 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1724 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1725 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1725);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction7___action[] = "parser::ReduceAction7::(parser::ReduceAction::action)";
+void parser___ReduceAction7___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1730;
+  fra.me.meth = LOCATE_parser___ReduceAction7___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1732 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1733 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1734 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1735 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1736 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1737 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1738 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1740 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1740);
+  }
+  /* parser/parser.nit:1742 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1742);
+  }
+  /* parser/parser.nit:1743 */
+  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:1745 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1745);
+  }
+  /* parser/parser.nit:1746 */
+  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:1747 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1753 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1754 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1754);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction8___action[] = "parser::ReduceAction8::(parser::ReduceAction::action)";
+void parser___ReduceAction8___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1759;
+  fra.me.meth = LOCATE_parser___ReduceAction8___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1761 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1762 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1763 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1764 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1765 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1767 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1767);
+  }
+  /* parser/parser.nit:1768 */
+  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:1769 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1775 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1776 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1776);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction9___action[] = "parser::ReduceAction9::(parser::ReduceAction::action)";
+void parser___ReduceAction9___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1781;
+  fra.me.meth = LOCATE_parser___ReduceAction9___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1783 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1784 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1785 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1786 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1787 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1788 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1790 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1790);
+  }
+  /* parser/parser.nit:1792 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1792);
+  }
+  /* parser/parser.nit:1793 */
+  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:1794 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1800 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1801 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1801);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction10___action[] = "parser::ReduceAction10::(parser::ReduceAction::action)";
+void parser___ReduceAction10___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1806;
+  fra.me.meth = LOCATE_parser___ReduceAction10___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1808 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1809 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1810 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1811 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1812 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1813 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1815 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1815);
+  }
+  /* parser/parser.nit:1816 */
+  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:1818 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1818);
+  }
+  /* parser/parser.nit:1819 */
+  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:1820 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1826 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1827 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1827);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction11___action[] = "parser::ReduceAction11::(parser::ReduceAction::action)";
+void parser___ReduceAction11___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1832;
+  fra.me.meth = LOCATE_parser___ReduceAction11___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1834 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1835 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1836 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1837 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1838 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1839 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1840 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1842 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1842);
+  }
+  /* parser/parser.nit:1844 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1844);
+  }
+  /* parser/parser.nit:1845 */
+  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:1847 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1847);
+  }
+  /* parser/parser.nit:1848 */
+  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:1849 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1855 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1856 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1856);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction12___action[] = "parser::ReduceAction12::(parser::ReduceAction::action)";
+void parser___ReduceAction12___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1861;
+  fra.me.meth = LOCATE_parser___ReduceAction12___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1863 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1864 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1865 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1866 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1867 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1868 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1870 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1870);
+  }
+  /* parser/parser.nit:1871 */
+  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:1873 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1873);
+  }
+  /* parser/parser.nit:1874 */
+  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:1875 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1881 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1882 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1882);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction13___action[] = "parser::ReduceAction13::(parser::ReduceAction::action)";
+void parser___ReduceAction13___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1887;
+  fra.me.meth = LOCATE_parser___ReduceAction13___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1889 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1890 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1891 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1892 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1893 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1894 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1895 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1897 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1897);
+  }
+  /* parser/parser.nit:1899 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1899);
+  }
+  /* parser/parser.nit:1900 */
+  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:1902 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1902);
+  }
+  /* parser/parser.nit:1903 */
+  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:1904 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1910 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1911 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1911);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction14___action[] = "parser::ReduceAction14::(parser::ReduceAction::action)";
+void parser___ReduceAction14___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1916;
+  fra.me.meth = LOCATE_parser___ReduceAction14___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1918 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1919 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1920 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1921 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1922 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1923 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1924 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1926 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1926);
+  }
+  /* parser/parser.nit:1927 */
+  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:1929 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1929);
+  }
+  /* parser/parser.nit:1930 */
+  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:1932 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1932);
+  }
+  /* parser/parser.nit:1933 */
+  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:1934 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1940 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1941 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1941);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction15___action[] = "parser::ReduceAction15::(parser::ReduceAction::action)";
+void parser___ReduceAction15___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1946;
+  fra.me.meth = LOCATE_parser___ReduceAction15___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1948 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1949 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1950 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1951 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1952 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1953 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1954 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1955 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1957 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1957);
+  }
+  /* parser/parser.nit:1959 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1959);
+  }
+  /* parser/parser.nit:1960 */
+  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:1962 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1962);
+  }
+  /* parser/parser.nit:1963 */
+  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:1965 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1965);
+  }
+  /* parser/parser.nit:1966 */
+  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:1967 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:1973 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:1974 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1974);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction16___action[] = "parser::ReduceAction16::(parser::ReduceAction::action)";
+void parser___ReduceAction16___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1979;
+  fra.me.meth = LOCATE_parser___ReduceAction16___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1981 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1982 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1983 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1984 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1985 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1986 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1988 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1988);
+  }
+  /* parser/parser.nit:1989 */
+  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:1990 */
+  fra.me.REG[7] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
+  /* parser/parser.nit:1993 */
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1994 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  }
+  /* parser/parser.nit:1996 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:2002 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:2003 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2003);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction17___action[] = "parser::ReduceAction17::(parser::ReduceAction::action)";
+void parser___ReduceAction17___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2008;
+  fra.me.meth = LOCATE_parser___ReduceAction17___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2010 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2011 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2012 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2013 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2014 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2015 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2017 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2017);
+  }
+  /* parser/parser.nit:2018 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2020 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2020);
+  }
+  /* parser/parser.nit:2021 */
+  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:2022 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* parser/parser.nit:2025 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2026 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* parser/parser.nit:2028 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2034 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2035 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2035);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction18___action[] = "parser::ReduceAction18::(parser::ReduceAction::action)";
+void parser___ReduceAction18___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2040;
+  fra.me.meth = LOCATE_parser___ReduceAction18___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2042 */
+  fra.me.REG[2] = NIT_NULL;
+  /* 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[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2046 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2047 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2049 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2049);
+  }
+  /* parser/parser.nit:2050 */
+  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:2051 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2053 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2053);
+  }
+  /* parser/parser.nit:2054 */
+  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:2055 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:2058 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2059 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:2061 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2067 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2068 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2068);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction19___action[] = "parser::ReduceAction19::(parser::ReduceAction::action)";
+void parser___ReduceAction19___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2073;
+  fra.me.meth = LOCATE_parser___ReduceAction19___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2075 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2076 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2077 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2078 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2079 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2080 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2081 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2083 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2083);
+  }
+  /* parser/parser.nit:2085 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2085);
+  }
+  /* parser/parser.nit:2086 */
+  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:2087 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2089 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2089);
+  }
+  /* parser/parser.nit:2090 */
+  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:2091 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:2094 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2095 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:2097 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2103 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2104 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2104);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction20___action[] = "parser::ReduceAction20::(parser::ReduceAction::action)";
+void parser___ReduceAction20___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2109;
+  fra.me.meth = LOCATE_parser___ReduceAction20___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2111 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2112 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2113 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2114 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2115 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2116 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2118 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2118);
+  }
+  /* parser/parser.nit:2119 */
+  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:2120 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2122 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2122);
+  }
+  /* parser/parser.nit:2123 */
+  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:2124 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:2127 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2128 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:2130 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2136 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2137 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2137);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction21___action[] = "parser::ReduceAction21::(parser::ReduceAction::action)";
+void parser___ReduceAction21___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2142;
+  fra.me.meth = LOCATE_parser___ReduceAction21___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2144 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2145 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2146 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2147 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2148 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2149 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2150 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2152 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2152);
+  }
+  /* parser/parser.nit:2154 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2154);
+  }
+  /* parser/parser.nit:2155 */
+  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:2156 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2158 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2158);
+  }
+  /* parser/parser.nit:2159 */
+  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:2160 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:2163 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2164 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:2166 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2172 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2173 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2173);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction22___action[] = "parser::ReduceAction22::(parser::ReduceAction::action)";
+void parser___ReduceAction22___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2178;
+  fra.me.meth = LOCATE_parser___ReduceAction22___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2180 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2181 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2182 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2183 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2184 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2185 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2186 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2188 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2188);
+  }
+  /* parser/parser.nit:2189 */
+  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:2191 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2191);
+  }
+  /* parser/parser.nit:2192 */
+  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:2193 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2195 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2195);
+  }
+  /* parser/parser.nit:2196 */
+  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:2197 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:2200 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2201 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:2203 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2209 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2210 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2210);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction23___action[] = "parser::ReduceAction23::(parser::ReduceAction::action)";
+void parser___ReduceAction23___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2215;
+  fra.me.meth = LOCATE_parser___ReduceAction23___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2217 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2218 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2219 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2220 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2221 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2222 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2223 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2224 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2226 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2226);
+  }
+  /* parser/parser.nit:2228 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2228);
+  }
+  /* parser/parser.nit:2229 */
+  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:2231 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2231);
+  }
+  /* parser/parser.nit:2232 */
+  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:2233 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2235 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2235);
+  }
+  /* parser/parser.nit:2236 */
+  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:2237 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:2240 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2241 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:2243 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2249 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2250 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2250);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction24___action[] = "parser::ReduceAction24::(parser::ReduceAction::action)";
+void parser___ReduceAction24___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2255;
+  fra.me.meth = LOCATE_parser___ReduceAction24___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2257 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2258 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2259 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2260 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2261 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2262 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2264 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2264);
+  }
+  /* parser/parser.nit:2265 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2267 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2267);
+  }
+  /* parser/parser.nit:2268 */
+  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:2269 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* parser/parser.nit:2272 */
+  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:2273 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2274 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* parser/parser.nit:2276 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2282 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2283 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2283);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction25___action[] = "parser::ReduceAction25::(parser::ReduceAction::action)";
+void parser___ReduceAction25___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2288;
+  fra.me.meth = LOCATE_parser___ReduceAction25___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2290 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2291 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2292 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2293 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2294 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2295 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2296 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2298 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2298);
+  }
+  /* parser/parser.nit:2300 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2300);
+  }
+  /* parser/parser.nit:2301 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2303 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2303);
+  }
+  /* parser/parser.nit:2304 */
+  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:2305 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* parser/parser.nit:2308 */
+  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:2309 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2310 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* parser/parser.nit:2312 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2318 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2319 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2319);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction26___action[] = "parser::ReduceAction26::(parser::ReduceAction::action)";
+void parser___ReduceAction26___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2324;
+  fra.me.meth = LOCATE_parser___ReduceAction26___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2326 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2327 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2328 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2329 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2330 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2331 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2332 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2334 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2334);
+  }
+  /* parser/parser.nit:2335 */
+  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:2337 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2337);
+  }
+  /* parser/parser.nit:2338 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2340 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2340);
+  }
+  /* parser/parser.nit:2341 */
+  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:2342 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2345 */
+  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:2346 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2347 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2349 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2355 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2356 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2356);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction27___action[] = "parser::ReduceAction27::(parser::ReduceAction::action)";
+void parser___ReduceAction27___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2361;
+  fra.me.meth = LOCATE_parser___ReduceAction27___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2363 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2364 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2365 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2366 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2367 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2368 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2369 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2370 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2372 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2372);
+  }
+  /* parser/parser.nit:2374 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2374);
+  }
+  /* parser/parser.nit:2375 */
+  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:2377 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2377);
+  }
+  /* parser/parser.nit:2378 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2380 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2380);
+  }
+  /* parser/parser.nit:2381 */
+  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:2382 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2385 */
+  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:2386 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2387 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2389 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2395 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2396 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2396);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction28___action[] = "parser::ReduceAction28::(parser::ReduceAction::action)";
+void parser___ReduceAction28___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2401;
+  fra.me.meth = LOCATE_parser___ReduceAction28___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2403 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2404 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2405 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2406 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2407 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2408 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2409 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2411 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2411);
+  }
+  /* parser/parser.nit:2412 */
+  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:2414 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2414);
+  }
+  /* parser/parser.nit:2415 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2417 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2417);
+  }
+  /* parser/parser.nit:2418 */
+  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:2419 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2422 */
+  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:2423 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2424 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2426 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2432 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2433 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2433);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction29___action[] = "parser::ReduceAction29::(parser::ReduceAction::action)";
+void parser___ReduceAction29___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2438;
+  fra.me.meth = LOCATE_parser___ReduceAction29___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2440 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2441 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2442 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2443 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2444 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2445 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2446 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2447 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2449 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2449);
+  }
+  /* parser/parser.nit:2451 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2451);
+  }
+  /* parser/parser.nit:2452 */
+  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:2454 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2454);
+  }
+  /* parser/parser.nit:2455 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2457 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2457);
+  }
+  /* parser/parser.nit:2458 */
+  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:2459 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2462 */
+  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:2463 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2464 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2466 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2472 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2473 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2473);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction30___action[] = "parser::ReduceAction30::(parser::ReduceAction::action)";
+void parser___ReduceAction30___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2478;
+  fra.me.meth = LOCATE_parser___ReduceAction30___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2480 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2481 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2482 */
+  fra.me.REG[4] = 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] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2486 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2487 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2489 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2489);
+  }
+  /* parser/parser.nit:2490 */
+  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:2492 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2492);
+  }
+  /* parser/parser.nit:2493 */
+  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:2495 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2495);
+  }
+  /* parser/parser.nit:2496 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2498 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2498);
+  }
+  /* parser/parser.nit:2499 */
+  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:2500 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2503 */
+  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:2504 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2505 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2507 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2513 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2514 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2514);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction31___action[] = "parser::ReduceAction31::(parser::ReduceAction::action)";
+void parser___ReduceAction31___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2519;
+  fra.me.meth = LOCATE_parser___ReduceAction31___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2521 */
+  fra.me.REG[2] = NIT_NULL;
+  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2524 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2525 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2526 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2527 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2528 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2529 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2531 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2531);
+  }
+  /* parser/parser.nit:2533 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2533);
+  }
+  /* parser/parser.nit:2534 */
+  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:2536 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2536);
+  }
+  /* parser/parser.nit:2537 */
+  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:2539 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2539);
+  }
+  /* parser/parser.nit:2540 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2542 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2542);
+  }
+  /* parser/parser.nit:2543 */
+  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:2544 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2547 */
+  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:2548 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2549 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2551 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:2557 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:2558 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2558);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction32___action[] = "parser::ReduceAction32::(parser::ReduceAction::action)";
+void parser___ReduceAction32___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2563;
+  fra.me.meth = LOCATE_parser___ReduceAction32___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2565 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2566 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2567 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2568 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2569 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2571 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2571);
+  }
+  /* parser/parser.nit:2572 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2573 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2575 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:2581 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:2582 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2582);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction33___action[] = "parser::ReduceAction33::(parser::ReduceAction::action)";
+void parser___ReduceAction33___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2587;
+  fra.me.meth = LOCATE_parser___ReduceAction33___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2589 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2590 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2591 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2592 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2593 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2594 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2596 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2596);
+  }
+  /* parser/parser.nit:2598 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2598);
+  }
+  /* parser/parser.nit:2599 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2600 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2602 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2608 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2609 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2609);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction34___action[] = "parser::ReduceAction34::(parser::ReduceAction::action)";
+void parser___ReduceAction34___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2614;
+  fra.me.meth = LOCATE_parser___ReduceAction34___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2616 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2617 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2618 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2619 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2620 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2621 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2623 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2623);
+  }
+  /* parser/parser.nit:2624 */
+  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:2626 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2626);
+  }
+  /* parser/parser.nit:2627 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2628 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2630 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2636 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2637 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2637);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction35___action[] = "parser::ReduceAction35::(parser::ReduceAction::action)";
+void parser___ReduceAction35___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2642;
+  fra.me.meth = LOCATE_parser___ReduceAction35___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2644 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2645 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2646 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2647 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2648 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2649 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2650 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2652 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2652);
+  }
+  /* parser/parser.nit:2654 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2654);
+  }
+  /* parser/parser.nit:2655 */
+  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:2657 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2657);
+  }
+  /* parser/parser.nit:2658 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2659 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2661 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2667 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2668 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2668);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction36___action[] = "parser::ReduceAction36::(parser::ReduceAction::action)";
+void parser___ReduceAction36___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2673;
+  fra.me.meth = LOCATE_parser___ReduceAction36___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2675 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2676 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2677 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2678 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2679 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2680 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2682 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2682);
+  }
+  /* parser/parser.nit:2683 */
+  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:2685 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2685);
+  }
+  /* parser/parser.nit:2686 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2687 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2689 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2695 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2696 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2696);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction37___action[] = "parser::ReduceAction37::(parser::ReduceAction::action)";
+void parser___ReduceAction37___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2701;
+  fra.me.meth = LOCATE_parser___ReduceAction37___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2703 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2704 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2705 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2706 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2707 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2708 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2709 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2711 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2711);
+  }
+  /* parser/parser.nit:2713 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2713);
+  }
+  /* parser/parser.nit:2714 */
+  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:2716 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2716);
+  }
+  /* parser/parser.nit:2717 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2718 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2720 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2726 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2727 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2727);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction38___action[] = "parser::ReduceAction38::(parser::ReduceAction::action)";
+void parser___ReduceAction38___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2732;
+  fra.me.meth = LOCATE_parser___ReduceAction38___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2734 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2735 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2736 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2737 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2738 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2739 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2740 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2742 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2742);
+  }
+  /* parser/parser.nit:2743 */
+  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:2745 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2745);
+  }
+  /* parser/parser.nit:2746 */
+  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:2748 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2748);
+  }
+  /* parser/parser.nit:2749 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2750 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2752 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2758 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2759 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2759);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction39___action[] = "parser::ReduceAction39::(parser::ReduceAction::action)";
+void parser___ReduceAction39___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2764;
+  fra.me.meth = LOCATE_parser___ReduceAction39___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2766 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2767 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2768 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2769 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2770 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2771 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2772 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2773 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2775 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2775);
+  }
+  /* parser/parser.nit:2777 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2777);
+  }
+  /* parser/parser.nit:2778 */
+  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:2780 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2780);
+  }
+  /* parser/parser.nit:2781 */
+  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:2783 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2783);
+  }
+  /* parser/parser.nit:2784 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2785 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2787 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2793 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2794 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2794);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction40___action[] = "parser::ReduceAction40::(parser::ReduceAction::action)";
+void parser___ReduceAction40___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2799;
+  fra.me.meth = LOCATE_parser___ReduceAction40___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2801 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2802 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2803 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2804 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2805 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2806 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2808 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2808);
+  }
+  /* parser/parser.nit:2810 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2810);
+  }
+  /* parser/parser.nit:2811 */
+  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:2812 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2813 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2815 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2821 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2822 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2822);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction41___action[] = "parser::ReduceAction41::(parser::ReduceAction::action)";
+void parser___ReduceAction41___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2827;
+  fra.me.meth = LOCATE_parser___ReduceAction41___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2829 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2830 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2831 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2832 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2833 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2834 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2835 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2837 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2837);
+  }
+  /* parser/parser.nit:2839 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2839);
+  }
+  /* parser/parser.nit:2841 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2841);
+  }
+  /* parser/parser.nit:2842 */
+  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:2843 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2844 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2846 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2852 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2853 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2853);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction42___action[] = "parser::ReduceAction42::(parser::ReduceAction::action)";
+void parser___ReduceAction42___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2858;
+  fra.me.meth = LOCATE_parser___ReduceAction42___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2860 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2861 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2862 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2863 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2864 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2865 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2866 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2868 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2868);
+  }
+  /* parser/parser.nit:2869 */
+  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:2871 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2871);
+  }
+  /* parser/parser.nit:2873 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2873);
+  }
+  /* parser/parser.nit:2874 */
+  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:2875 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2876 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2878 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2884 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2885 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2885);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction43___action[] = "parser::ReduceAction43::(parser::ReduceAction::action)";
+void parser___ReduceAction43___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2890;
+  fra.me.meth = LOCATE_parser___ReduceAction43___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2892 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2893 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2894 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2895 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2896 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2897 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2898 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2899 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2901 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2901);
+  }
+  /* parser/parser.nit:2903 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2903);
+  }
+  /* parser/parser.nit:2904 */
+  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:2906 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2906);
+  }
+  /* parser/parser.nit:2908 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2908);
+  }
+  /* parser/parser.nit:2909 */
+  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:2910 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2911 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2913 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2919 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2920 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2920);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction44___action[] = "parser::ReduceAction44::(parser::ReduceAction::action)";
+void parser___ReduceAction44___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2925;
+  fra.me.meth = LOCATE_parser___ReduceAction44___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2927 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2928 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2929 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2930 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2931 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2932 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2933 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2935 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2935);
+  }
+  /* parser/parser.nit:2936 */
+  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:2938 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2938);
+  }
+  /* parser/parser.nit:2940 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2940);
+  }
+  /* parser/parser.nit:2941 */
+  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:2942 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2943 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2945 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2951 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2952 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2952);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction45___action[] = "parser::ReduceAction45::(parser::ReduceAction::action)";
+void parser___ReduceAction45___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2957;
+  fra.me.meth = LOCATE_parser___ReduceAction45___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2959 */
+  fra.me.REG[2] = NIT_NULL;
+  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2962 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2963 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2964 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2965 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2966 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2968 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2968);
+  }
+  /* parser/parser.nit:2970 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2970);
+  }
+  /* parser/parser.nit:2971 */
+  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:2973 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2973);
+  }
+  /* parser/parser.nit:2975 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2975);
+  }
+  /* parser/parser.nit:2976 */
+  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:2977 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2978 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2980 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2986 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2987 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2987);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction46___action[] = "parser::ReduceAction46::(parser::ReduceAction::action)";
+void parser___ReduceAction46___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2992;
+  fra.me.meth = LOCATE_parser___ReduceAction46___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2994 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2995 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2996 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2997 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2998 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2999 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3000 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3001 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3003 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3003);
+  }
+  /* parser/parser.nit:3004 */
+  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:3006 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3006);
+  }
+  /* parser/parser.nit:3007 */
+  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:3009 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3009);
+  }
+  /* parser/parser.nit:3011 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3011);
+  }
+  /* parser/parser.nit:3012 */
+  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:3013 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3014 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3016 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3022 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3023 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3023);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction47___action[] = "parser::ReduceAction47::(parser::ReduceAction::action)";
+void parser___ReduceAction47___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3028;
+  fra.me.meth = LOCATE_parser___ReduceAction47___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3030 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3031 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3032 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3033 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3034 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3035 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3036 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3037 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3038 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3040 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3040);
+  }
+  /* parser/parser.nit:3042 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3042);
+  }
+  /* parser/parser.nit:3043 */
+  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:3045 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3045);
+  }
+  /* parser/parser.nit:3046 */
+  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:3048 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3048);
+  }
+  /* parser/parser.nit:3050 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3050);
+  }
+  /* parser/parser.nit:3051 */
+  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:3052 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3053 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3055 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3061 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3062 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3062);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction48___action[] = "parser::ReduceAction48::(parser::ReduceAction::action)";
+void parser___ReduceAction48___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3067;
+  fra.me.meth = LOCATE_parser___ReduceAction48___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3069 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3070 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3071 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3072 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3073 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3074 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3075 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3077 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3077);
+  }
+  /* parser/parser.nit:3078 */
+  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:3079 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* parser/parser.nit:3083 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3083);
+  }
+  /* parser/parser.nit:3084 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3085 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* parser/parser.nit:3087 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3088 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3090 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:3096 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:3097 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3097);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction49___action[] = "parser::ReduceAction49::(parser::ReduceAction::action)";
+void parser___ReduceAction49___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3102;
+  fra.me.meth = LOCATE_parser___ReduceAction49___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3104 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3105 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3106 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3107 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3108 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3109 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3110 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3112 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3112);
+  }
+  /* parser/parser.nit:3113 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3115 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3115);
+  }
+  /* parser/parser.nit:3116 */
+  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:3117 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* parser/parser.nit:3121 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3121);
+  }
+  /* parser/parser.nit:3122 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3123 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* parser/parser.nit:3125 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3126 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3128 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:3134 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:3135 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3135);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction50___action[] = "parser::ReduceAction50::(parser::ReduceAction::action)";
+void parser___ReduceAction50___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3140;
+  fra.me.meth = LOCATE_parser___ReduceAction50___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3142 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3143 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3144 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3145 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3146 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3147 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3148 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3150 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3150);
+  }
+  /* parser/parser.nit:3151 */
+  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:3152 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3154 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3154);
+  }
+  /* parser/parser.nit:3155 */
+  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:3156 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:3160 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3160);
+  }
+  /* parser/parser.nit:3161 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3162 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:3164 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3165 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3167 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:3173 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:3174 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3174);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction51___action[] = "parser::ReduceAction51::(parser::ReduceAction::action)";
+void parser___ReduceAction51___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3179;
+  fra.me.meth = LOCATE_parser___ReduceAction51___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3181 */
+  fra.me.REG[2] = NIT_NULL;
+  /* 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3185 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3186 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3187 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3188 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3190 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3190);
+  }
+  /* parser/parser.nit:3192 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3192);
+  }
+  /* parser/parser.nit:3193 */
+  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:3194 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3196 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3196);
+  }
+  /* parser/parser.nit:3197 */
+  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:3198 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:3202 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3202);
+  }
+  /* parser/parser.nit:3203 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3204 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:3206 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3207 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3209 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3215 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3216 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3216);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction52___action[] = "parser::ReduceAction52::(parser::ReduceAction::action)";
+void parser___ReduceAction52___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3221;
+  fra.me.meth = LOCATE_parser___ReduceAction52___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3223 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3224 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3225 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3226 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3227 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3228 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3229 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3231 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3231);
+  }
+  /* parser/parser.nit:3232 */
+  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:3233 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3235 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3235);
+  }
+  /* parser/parser.nit:3236 */
+  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:3237 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:3241 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3241);
+  }
+  /* parser/parser.nit:3242 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3243 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:3245 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3246 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3248 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:3254 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:3255 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3255);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction53___action[] = "parser::ReduceAction53::(parser::ReduceAction::action)";
+void parser___ReduceAction53___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3260;
+  fra.me.meth = LOCATE_parser___ReduceAction53___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3262 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3263 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3264 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3265 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3266 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3267 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3268 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3269 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3271 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3271);
+  }
+  /* parser/parser.nit:3273 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3273);
+  }
+  /* parser/parser.nit:3274 */
+  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:3275 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3277 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3277);
+  }
+  /* parser/parser.nit:3278 */
+  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:3279 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:3283 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3283);
+  }
+  /* parser/parser.nit:3284 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3285 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:3287 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3288 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3290 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3296 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3297 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3297);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction54___action[] = "parser::ReduceAction54::(parser::ReduceAction::action)";
+void parser___ReduceAction54___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3302;
+  fra.me.meth = LOCATE_parser___ReduceAction54___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3304 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3305 */
+  fra.me.REG[3] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3308 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3309 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3310 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3311 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3313 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3313);
+  }
+  /* parser/parser.nit:3314 */
+  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:3316 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3316);
+  }
+  /* parser/parser.nit:3317 */
+  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:3318 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3320 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3320);
+  }
+  /* parser/parser.nit:3321 */
+  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:3322 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:3326 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3326);
+  }
+  /* parser/parser.nit:3327 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3328 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:3330 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3331 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3333 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3339 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3340 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3340);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction55___action[] = "parser::ReduceAction55::(parser::ReduceAction::action)";
+void parser___ReduceAction55___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3345;
+  fra.me.meth = LOCATE_parser___ReduceAction55___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3347 */
+  fra.me.REG[2] = NIT_NULL;
+  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3350 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3351 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3352 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3353 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3354 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3355 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3357 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3357);
+  }
+  /* parser/parser.nit:3359 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3359);
+  }
+  /* parser/parser.nit:3360 */
+  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:3362 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3362);
+  }
+  /* parser/parser.nit:3363 */
+  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:3364 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3366 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3366);
+  }
+  /* parser/parser.nit:3367 */
+  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:3368 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:3372 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3372);
+  }
+  /* parser/parser.nit:3373 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3374 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:3376 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3377 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3379 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3385 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3386 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3386);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction56___action[] = "parser::ReduceAction56::(parser::ReduceAction::action)";
+void parser___ReduceAction56___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3391;
+  fra.me.meth = LOCATE_parser___ReduceAction56___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3393 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3394 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3395 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3396 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3397 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3398 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3399 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3401 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3401);
+  }
+  /* parser/parser.nit:3402 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3404 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3404);
+  }
+  /* parser/parser.nit:3405 */
+  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:3406 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* parser/parser.nit:3410 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3410);
+  }
+  /* parser/parser.nit:3411 */
+  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:3412 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3413 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* parser/parser.nit:3415 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3416 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3418 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:3424 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:3425 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3425);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction57___action[] = "parser::ReduceAction57::(parser::ReduceAction::action)";
+void parser___ReduceAction57___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3430;
+  fra.me.meth = LOCATE_parser___ReduceAction57___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3432 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3433 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3434 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3435 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3436 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3437 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3438 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3439 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3441 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3441);
+  }
+  /* parser/parser.nit:3443 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3443);
+  }
+  /* parser/parser.nit:3444 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3446 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3446);
+  }
+  /* parser/parser.nit:3447 */
+  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:3448 */
+  fra.me.REG[10] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[10]);
+  /* parser/parser.nit:3452 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3452);
+  }
+  /* parser/parser.nit:3453 */
+  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:3454 */
+  REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[10])(fra.me.REG[10], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3455 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+  }
+  /* parser/parser.nit:3457 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3458 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3460 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3466 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3467 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3467);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction58___action[] = "parser::ReduceAction58::(parser::ReduceAction::action)";
+void parser___ReduceAction58___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3472;
+  fra.me.meth = LOCATE_parser___ReduceAction58___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3474 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3475 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3476 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3477 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3478 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3479 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3480 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3481 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3483 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3483);
+  }
+  /* parser/parser.nit:3484 */
+  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:3486 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3486);
+  }
+  /* parser/parser.nit:3487 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3489 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3489);
+  }
+  /* parser/parser.nit:3490 */
+  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:3491 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3495 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3495);
+  }
+  /* parser/parser.nit:3496 */
+  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:3497 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3498 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3500 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3501 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3503 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3509 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3510 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3510);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction59___action[] = "parser::ReduceAction59::(parser::ReduceAction::action)";
+void parser___ReduceAction59___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3515;
+  fra.me.meth = LOCATE_parser___ReduceAction59___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3517 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3518 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3519 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3520 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3521 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3522 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3523 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3524 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3525 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3527 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3527);
+  }
+  /* parser/parser.nit:3529 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3529);
+  }
+  /* parser/parser.nit:3530 */
+  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:3532 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3532);
+  }
+  /* parser/parser.nit:3533 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3535 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3535);
+  }
+  /* parser/parser.nit:3536 */
+  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:3537 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3541 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3541);
+  }
+  /* parser/parser.nit:3542 */
+  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:3543 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3544 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3546 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3547 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3549 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3555 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3556 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3556);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction60___action[] = "parser::ReduceAction60::(parser::ReduceAction::action)";
+void parser___ReduceAction60___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3561;
+  fra.me.meth = LOCATE_parser___ReduceAction60___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3563 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3564 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3565 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3566 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3567 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3568 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3569 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3570 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3572 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3572);
+  }
+  /* parser/parser.nit:3573 */
+  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:3575 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3575);
+  }
+  /* parser/parser.nit:3576 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3578 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3578);
+  }
+  /* parser/parser.nit:3579 */
+  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:3580 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3584 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3584);
+  }
+  /* parser/parser.nit:3585 */
+  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:3586 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3587 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3589 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3590 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3592 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3598 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3599 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3599);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction61___action[] = "parser::ReduceAction61::(parser::ReduceAction::action)";
+void parser___ReduceAction61___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3604;
+  fra.me.meth = LOCATE_parser___ReduceAction61___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3606 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3607 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3608 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3609 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3610 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3611 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3612 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3613 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3614 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3616 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3616);
+  }
+  /* parser/parser.nit:3618 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3618);
+  }
+  /* parser/parser.nit:3619 */
+  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:3621 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3621);
+  }
+  /* parser/parser.nit:3622 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3624 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3624);
+  }
+  /* parser/parser.nit:3625 */
+  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:3626 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3630 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3630);
+  }
+  /* parser/parser.nit:3631 */
+  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:3632 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3633 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3635 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3636 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3638 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3644 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3645 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3645);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction62___action[] = "parser::ReduceAction62::(parser::ReduceAction::action)";
+void parser___ReduceAction62___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3650;
+  fra.me.meth = LOCATE_parser___ReduceAction62___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3652 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3653 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3654 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3655 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3656 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3657 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3658 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3659 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3660 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3662 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3662);
+  }
+  /* parser/parser.nit:3663 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
+  fra.me.REG[8] = fra.me.REG[7];
+  /* parser/parser.nit:3665 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3665);
+  }
+  /* parser/parser.nit:3666 */
+  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:3668 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3668);
+  }
+  /* parser/parser.nit:3669 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3671 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3671);
+  }
+  /* parser/parser.nit:3672 */
+  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:3673 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3677 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3677);
+  }
+  /* parser/parser.nit:3678 */
+  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:3679 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3680 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3682 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3683 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3685 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3691 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3692 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3692);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction63___action[] = "parser::ReduceAction63::(parser::ReduceAction::action)";
+void parser___ReduceAction63___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3697;
+  fra.me.meth = LOCATE_parser___ReduceAction63___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3699 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3700 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3701 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3702 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3703 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3704 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3705 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3706 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3707 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3708 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3710 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3710);
+  }
+  /* parser/parser.nit:3712 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3712);
+  }
+  /* parser/parser.nit:3713 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
+  fra.me.REG[9] = fra.me.REG[7];
+  /* parser/parser.nit:3715 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3715);
+  }
+  /* parser/parser.nit:3716 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[6]);
+  fra.me.REG[10] = fra.me.REG[6];
+  /* parser/parser.nit:3718 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3718);
+  }
+  /* parser/parser.nit:3719 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3721 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3721);
+  }
+  /* parser/parser.nit:3722 */
+  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:3723 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3727 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3727);
+  }
+  /* parser/parser.nit:3728 */
+  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:3729 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3730 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3732 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3733 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3735 */
+  fra.me.REG[11] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[8], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
+  /* parser/parser.nit:3741 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* parser/parser.nit:3742 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3742);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction64___action[] = "parser::ReduceAction64::(parser::ReduceAction::action)";
+void parser___ReduceAction64___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3747;
+  fra.me.meth = LOCATE_parser___ReduceAction64___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3749 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3750 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3751 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3752 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3753 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3754 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3756 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3756);
+  }
+  /* parser/parser.nit:3758 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwmodule, ID_parser___parser_nodes___TKwmodule)) /*cast nullable TKwmodule*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3758);
+  }
+  /* parser/parser.nit:3760 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3760);
+  }
+  /* parser/parser.nit:3761 */
+  fra.me.REG[3] = NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:3767 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3768 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3768);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction65___action[] = "parser::ReduceAction65::(parser::ReduceAction::action)";
+void parser___ReduceAction65___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3773;
+  fra.me.meth = LOCATE_parser___ReduceAction65___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3775 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3776 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3777 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3778 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3779 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3780 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3781 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3783 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3783);
+  }
+  /* parser/parser.nit:3785 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmodule, ID_parser___parser_nodes___TKwmodule)) /*cast nullable TKwmodule*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3785);
+  }
+  /* parser/parser.nit:3787 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3787);
+  }
+  /* parser/parser.nit:3789 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3789);
+  }
+  /* parser/parser.nit:3790 */
+  fra.me.REG[3] = NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:3796 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3797 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3797);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction66___action[] = "parser::ReduceAction66::(parser::ReduceAction::action)";
+void parser___ReduceAction66___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3802;
+  fra.me.meth = LOCATE_parser___ReduceAction66___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3804 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3805 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3806 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3807 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3808 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3809 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3810 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3812 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3812);
+  }
+  /* parser/parser.nit:3814 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3814);
+  }
+  /* parser/parser.nit:3816 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3816);
+  }
+  /* parser/parser.nit:3817 */
+  fra.me.REG[3] = NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:3823 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3824 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3824);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction67___action[] = "parser::ReduceAction67::(parser::ReduceAction::action)";
+void parser___ReduceAction67___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 3829;
+  fra.me.meth = LOCATE_parser___ReduceAction67___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3831 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3832 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3833 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3834 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3835 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3836 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3837 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3838 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3840 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3840);
+  }
+  /* parser/parser.nit:3842 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3842);
+  }
+  /* parser/parser.nit:3844 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3844);
+  }
+  /* parser/parser.nit:3846 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3846);
+  }
+  /* parser/parser.nit:3847 */
+  fra.me.REG[3] = NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:3853 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3854 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3854);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction68___action[] = "parser::ReduceAction68::(parser::ReduceAction::action)";
+void parser___ReduceAction68___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 3859;
+  fra.me.meth = LOCATE_parser___ReduceAction68___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3861 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3862 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3863 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3864 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3865 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3866 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3867 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3869 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3869);
+  }
+  /* parser/parser.nit:3871 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3871);
+  }
+  /* parser/parser.nit:3873 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3873);
+  }
+  /* parser/parser.nit:3874 */
+  fra.me.REG[3] = NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:3879 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3880 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3880);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction69___action[] = "parser::ReduceAction69::(parser::ReduceAction::action)";
+void parser___ReduceAction69___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  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___ReduceAction69___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3891 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast nullable APropdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3891);
+  }
+  /* parser/parser.nit:3892 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3893 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3895 */
+  fra.me.REG[4] = NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:3898 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:3899 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3899);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction70___action[] = "parser::ReduceAction70::(parser::ReduceAction::action)";
+void parser___ReduceAction70___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 = 3904;
+  fra.me.meth = LOCATE_parser___ReduceAction70___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3906 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3907 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3908 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3909 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3909);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction71___action[] = "parser::ReduceAction71::(parser::ReduceAction::action)";
+void parser___ReduceAction71___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 3914;
+  fra.me.meth = LOCATE_parser___ReduceAction71___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3916 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3917 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3918 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3920 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3920);
+  }
+  /* parser/parser.nit:3921 */
+  fra.me.REG[3] = NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:3925 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3926 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3926);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction73___action[] = "parser::ReduceAction73::(parser::ReduceAction::action)";
+void parser___ReduceAction73___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 3931;
+  fra.me.meth = LOCATE_parser___ReduceAction73___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3933 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3934 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3935 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3936 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3937 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3938 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3939 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3940 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3941 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3942 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3943 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3945 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3945);
+  }
+  /* parser/parser.nit:3947 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3947);
+  }
+  /* parser/parser.nit:3949 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3949);
+  }
+  /* parser/parser.nit:3951 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3951);
+  }
+  /* parser/parser.nit:3953 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3953);
+  }
+  /* parser/parser.nit:3954 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[9], fra.me.REG[10], fra.me.REG[3]);
+  /* parser/parser.nit:3967 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3968 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3968);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction74___action[] = "parser::ReduceAction74::(parser::ReduceAction::action)";
+void parser___ReduceAction74___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 3973;
+  fra.me.meth = LOCATE_parser___ReduceAction74___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3975 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3976 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3977 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3978 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3979 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3980 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3981 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3982 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3983 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3984 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3985 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3986 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3988 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3988);
+  }
+  /* parser/parser.nit:3990 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3990);
+  }
+  /* parser/parser.nit:3992 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3992);
+  }
+  /* parser/parser.nit:3994 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3994);
+  }
+  /* parser/parser.nit:3996 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3996);
+  }
+  /* parser/parser.nit:3998 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3998);
+  }
+  /* parser/parser.nit:3999 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:4012 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4013 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4013);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction75___action[] = "parser::ReduceAction75::(parser::ReduceAction::action)";
+void parser___ReduceAction75___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4018;
+  fra.me.meth = LOCATE_parser___ReduceAction75___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4020 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4021 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4022 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4023 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4024 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4025 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4026 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4027 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4028 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4029 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4030 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4031 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4033 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4033);
+  }
+  /* parser/parser.nit:4035 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4035);
+  }
+  /* parser/parser.nit:4037 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4037);
+  }
+  /* parser/parser.nit:4039 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4039);
+  }
+  /* parser/parser.nit:4041 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4041);
+  }
+  /* parser/parser.nit:4042 */
+  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:4044 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4044);
+  }
+  /* parser/parser.nit:4045 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:4058 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4059 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4059);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction76___action[] = "parser::ReduceAction76::(parser::ReduceAction::action)";
+void parser___ReduceAction76___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4064;
+  fra.me.meth = LOCATE_parser___ReduceAction76___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4066 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4067 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4068 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4069 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4070 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4071 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4072 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4073 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4074 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4075 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4076 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4077 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4078 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4080 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4080);
+  }
+  /* parser/parser.nit:4082 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4082);
+  }
+  /* parser/parser.nit:4084 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4084);
+  }
+  /* parser/parser.nit:4086 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4086);
+  }
+  /* parser/parser.nit:4088 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4088);
+  }
+  /* parser/parser.nit:4090 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4090);
+  }
+  /* parser/parser.nit:4091 */
+  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:4093 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4093);
+  }
+  /* parser/parser.nit:4094 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4107 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4108 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4108);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction77___action[] = "parser::ReduceAction77::(parser::ReduceAction::action)";
+void parser___ReduceAction77___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4113;
+  fra.me.meth = LOCATE_parser___ReduceAction77___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4115 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4116 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4117 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4118 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4119 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4120 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4121 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4122 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4123 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4124 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4125 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4126 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4128 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4128);
+  }
+  /* parser/parser.nit:4130 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4130);
+  }
+  /* parser/parser.nit:4132 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4132);
+  }
+  /* parser/parser.nit:4134 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4134);
+  }
+  /* parser/parser.nit:4135 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4137 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4137);
+  }
+  /* parser/parser.nit:4138 */
+  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:4139 */
+  fra.me.REG[12] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[12], NIT_NULL);
+  /* parser/parser.nit:4146 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4146);
+  }
+  /* parser/parser.nit:4147 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], fra.me.REG[12], NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:4160 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4161 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4161);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction78___action[] = "parser::ReduceAction78::(parser::ReduceAction::action)";
+void parser___ReduceAction78___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4166;
+  fra.me.meth = LOCATE_parser___ReduceAction78___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4168 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4169 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4170 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4171 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4172 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4173 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4174 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4175 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4176 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4177 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4178 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4179 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4180 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4182 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4182);
+  }
+  /* parser/parser.nit:4184 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4184);
+  }
+  /* parser/parser.nit:4186 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4186);
+  }
+  /* parser/parser.nit:4188 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4188);
+  }
+  /* parser/parser.nit:4190 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4190);
+  }
+  /* parser/parser.nit:4191 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4193 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4193);
+  }
+  /* parser/parser.nit:4194 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4195 */
+  fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
+  /* parser/parser.nit:4202 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4202);
+  }
+  /* parser/parser.nit:4203 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], fra.me.REG[13], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4216 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4217 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4217);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction79___action[] = "parser::ReduceAction79::(parser::ReduceAction::action)";
+void parser___ReduceAction79___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4222;
+  fra.me.meth = LOCATE_parser___ReduceAction79___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4224 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4225 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4226 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4227 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4228 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4229 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4230 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4231 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4232 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4233 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4234 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4235 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4236 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4238 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4238);
+  }
+  /* parser/parser.nit:4240 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4240);
+  }
+  /* parser/parser.nit:4242 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4242);
+  }
+  /* parser/parser.nit:4244 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4244);
+  }
+  /* parser/parser.nit:4246 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4246);
+  }
+  /* parser/parser.nit:4247 */
+  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:4248 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4250 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4250);
+  }
+  /* parser/parser.nit:4251 */
+  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:4252 */
+  fra.me.REG[5] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:4259 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4259);
+  }
+  /* parser/parser.nit:4260 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[5], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4273 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4274 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4274);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction80___action[] = "parser::ReduceAction80::(parser::ReduceAction::action)";
+void parser___ReduceAction80___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4279;
+  fra.me.meth = LOCATE_parser___ReduceAction80___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4281 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4282 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4283 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4284 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4285 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4286 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4287 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4288 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4289 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4290 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4291 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4292 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4293 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4294 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4296 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4296);
+  }
+  /* parser/parser.nit:4298 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4298);
+  }
+  /* parser/parser.nit:4300 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4300);
+  }
+  /* parser/parser.nit:4302 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4302);
+  }
+  /* parser/parser.nit:4304 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4304);
+  }
+  /* parser/parser.nit:4306 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4306);
+  }
+  /* parser/parser.nit:4307 */
+  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:4308 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4310 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4310);
+  }
+  /* parser/parser.nit:4311 */
+  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:4312 */
+  fra.me.REG[5] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:4319 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4319);
+  }
+  /* parser/parser.nit:4320 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[5], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4333 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4334 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4334);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction81___action[] = "parser::ReduceAction81::(parser::ReduceAction::action)";
+void parser___ReduceAction81___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4339;
+  fra.me.meth = LOCATE_parser___ReduceAction81___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4341 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4342 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4343 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4344 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4345 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4346 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4347 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4348 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4349 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4350 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4351 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4352 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4354 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4354);
+  }
+  /* parser/parser.nit:4356 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4356);
+  }
+  /* parser/parser.nit:4358 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4358);
+  }
+  /* parser/parser.nit:4360 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4360);
+  }
+  /* parser/parser.nit:4362 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4362);
+  }
+  /* parser/parser.nit:4364 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4364);
+  }
+  /* parser/parser.nit:4365 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:4378 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4379 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4379);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction82___action[] = "parser::ReduceAction82::(parser::ReduceAction::action)";
+void parser___ReduceAction82___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4384;
+  fra.me.meth = LOCATE_parser___ReduceAction82___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4388 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4389 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4390 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4391 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4392 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4393 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4394 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4395 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4396 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4397 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4398 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4400 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4400);
+  }
+  /* parser/parser.nit:4402 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4402);
+  }
+  /* parser/parser.nit:4404 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4404);
+  }
+  /* parser/parser.nit:4406 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4406);
+  }
+  /* parser/parser.nit:4408 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4408);
+  }
+  /* parser/parser.nit:4410 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4410);
+  }
+  /* parser/parser.nit:4412 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4412);
+  }
+  /* parser/parser.nit:4413 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4426 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4427 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4427);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction83___action[] = "parser::ReduceAction83::(parser::ReduceAction::action)";
+void parser___ReduceAction83___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4432;
+  fra.me.meth = LOCATE_parser___ReduceAction83___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4434 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4435 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4436 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4437 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4438 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4439 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4440 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4441 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4442 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4443 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4444 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4445 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4446 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4448 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4448);
+  }
+  /* parser/parser.nit:4450 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4450);
+  }
+  /* parser/parser.nit:4452 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4452);
+  }
+  /* parser/parser.nit:4454 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4454);
+  }
+  /* parser/parser.nit:4456 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4456);
+  }
+  /* parser/parser.nit:4457 */
+  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:4459 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4459);
+  }
+  /* parser/parser.nit:4461 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4461);
+  }
+  /* parser/parser.nit:4462 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4475 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4476 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4476);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction84___action[] = "parser::ReduceAction84::(parser::ReduceAction::action)";
+void parser___ReduceAction84___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4481;
+  fra.me.meth = LOCATE_parser___ReduceAction84___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4483 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4484 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4485 */
+  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4488 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4489 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4490 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4491 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4492 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4493 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4494 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4495 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4496 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4498 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4498);
+  }
+  /* parser/parser.nit:4500 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4500);
+  }
+  /* parser/parser.nit:4502 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4502);
+  }
+  /* parser/parser.nit:4504 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4504);
+  }
+  /* parser/parser.nit:4506 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4506);
+  }
+  /* parser/parser.nit:4508 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4508);
+  }
+  /* parser/parser.nit:4509 */
+  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:4511 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4511);
+  }
+  /* parser/parser.nit:4513 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4513);
+  }
+  /* parser/parser.nit:4514 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4527 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4528 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4528);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction85___action[] = "parser::ReduceAction85::(parser::ReduceAction::action)";
+void parser___ReduceAction85___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4533;
+  fra.me.meth = LOCATE_parser___ReduceAction85___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4535 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4536 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4537 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4538 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4539 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4540 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4541 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4542 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4543 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4544 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4545 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4546 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4547 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4549 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4549);
+  }
+  /* parser/parser.nit:4551 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4551);
+  }
+  /* parser/parser.nit:4553 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4553);
+  }
+  /* parser/parser.nit:4555 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4555);
+  }
+  /* parser/parser.nit:4556 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4558 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4558);
+  }
+  /* parser/parser.nit:4559 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:4560 */
+  fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
+  /* parser/parser.nit:4567 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4567);
+  }
+  /* parser/parser.nit:4569 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4569);
+  }
+  /* parser/parser.nit:4570 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[13], fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4583 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4584 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4584);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction86___action[] = "parser::ReduceAction86::(parser::ReduceAction::action)";
+void parser___ReduceAction86___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4589;
+  fra.me.meth = LOCATE_parser___ReduceAction86___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4591 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4592 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4593 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4594 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4595 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4596 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4597 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4598 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4599 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4600 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4601 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4602 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4603 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4604 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4606 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4606);
+  }
+  /* parser/parser.nit:4608 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4608);
+  }
+  /* parser/parser.nit:4610 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4610);
+  }
+  /* parser/parser.nit:4612 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4612);
+  }
+  /* parser/parser.nit:4614 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4614);
+  }
+  /* parser/parser.nit:4615 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4617 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4617);
+  }
+  /* parser/parser.nit:4618 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:4619 */
+  fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
+  /* parser/parser.nit:4626 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4626);
+  }
+  /* parser/parser.nit:4628 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4628);
+  }
+  /* parser/parser.nit:4629 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[14], fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4642 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4643 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4643);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction87___action[] = "parser::ReduceAction87::(parser::ReduceAction::action)";
+void parser___ReduceAction87___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4648;
+  fra.me.meth = LOCATE_parser___ReduceAction87___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4650 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4651 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4652 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4653 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4654 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4655 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4656 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4657 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4658 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4659 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4660 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4661 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4662 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4663 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4665 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4665);
+  }
+  /* parser/parser.nit:4667 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4667);
+  }
+  /* parser/parser.nit:4669 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4669);
+  }
+  /* parser/parser.nit:4671 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4671);
+  }
+  /* parser/parser.nit:4673 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4673);
+  }
+  /* parser/parser.nit:4674 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:4675 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4677 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4677);
+  }
+  /* parser/parser.nit:4678 */
+  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:4679 */
+  fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:4686 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4686);
+  }
+  /* parser/parser.nit:4688 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4688);
+  }
+  /* parser/parser.nit:4689 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4702 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4703 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4703);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction88___action[] = "parser::ReduceAction88::(parser::ReduceAction::action)";
+void parser___ReduceAction88___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4708;
+  fra.me.meth = LOCATE_parser___ReduceAction88___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4710 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4711 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4712 */
+  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4715 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4716 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4717 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4718 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4719 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4720 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4721 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4722 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4723 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4724 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4726 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4726);
+  }
+  /* parser/parser.nit:4728 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4728);
+  }
+  /* parser/parser.nit:4730 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4730);
+  }
+  /* parser/parser.nit:4732 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4732);
+  }
+  /* parser/parser.nit:4734 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
+  }
+  /* parser/parser.nit:4736 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4736);
+  }
+  /* parser/parser.nit:4737 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:4738 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4740 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4740);
+  }
+  /* parser/parser.nit:4741 */
+  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:4742 */
+  fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:4749 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4749);
+  }
+  /* parser/parser.nit:4751 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4751);
+  }
+  /* parser/parser.nit:4752 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], fra.me.REG[4], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:4765 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4766 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4766);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction89___action[] = "parser::ReduceAction89::(parser::ReduceAction::action)";
+void parser___ReduceAction89___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4771;
+  fra.me.meth = LOCATE_parser___ReduceAction89___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4773 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4774 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4775 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4776 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4777 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4778 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4779 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4780 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4781 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4782 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4783 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4784 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4786 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4786);
+  }
+  /* parser/parser.nit:4788 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4788);
+  }
+  /* parser/parser.nit:4790 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4790);
+  }
+  /* parser/parser.nit:4792 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4792);
+  }
+  /* parser/parser.nit:4794 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4794);
+  }
+  /* parser/parser.nit:4795 */
+  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:4797 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4797);
+  }
+  /* parser/parser.nit:4798 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:4811 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4812 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4812);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction90___action[] = "parser::ReduceAction90::(parser::ReduceAction::action)";
+void parser___ReduceAction90___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 4817;
+  fra.me.meth = LOCATE_parser___ReduceAction90___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4819 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4820 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4821 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4822 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4823 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4824 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4825 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4826 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4827 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4828 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4829 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4830 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4831 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4833 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4833);
+  }
+  /* parser/parser.nit:4835 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4835);
+  }
+  /* parser/parser.nit:4837 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4837);
+  }
+  /* parser/parser.nit:4839 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4839);
+  }
+  /* parser/parser.nit:4841 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4841);
+  }
+  /* parser/parser.nit:4843 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4843);
+  }
+  /* parser/parser.nit:4844 */
+  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:4846 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4846);
+  }
+  /* parser/parser.nit:4847 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4860 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4861 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4861);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction91___action[] = "parser::ReduceAction91::(parser::ReduceAction::action)";
+void parser___ReduceAction91___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4866;
+  fra.me.meth = LOCATE_parser___ReduceAction91___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4868 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4869 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4870 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4871 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4872 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4873 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4874 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4875 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4876 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4877 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4878 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4879 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4880 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4882 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4882);
+  }
+  /* parser/parser.nit:4884 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4884);
+  }
+  /* parser/parser.nit:4886 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4886);
+  }
+  /* parser/parser.nit:4888 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4888);
+  }
+  /* parser/parser.nit:4890 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4890);
+  }
+  /* parser/parser.nit:4891 */
+  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:4893 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4893);
+  }
+  /* parser/parser.nit:4894 */
+  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:4896 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4896);
+  }
+  /* parser/parser.nit:4897 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4910 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4911 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4911);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction92___action[] = "parser::ReduceAction92::(parser::ReduceAction::action)";
+void parser___ReduceAction92___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4916;
+  fra.me.meth = LOCATE_parser___ReduceAction92___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4918 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4919 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4920 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4921 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4922 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4923 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4924 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4925 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4926 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4927 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4928 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4929 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4930 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4931 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4933 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4933);
+  }
+  /* parser/parser.nit:4935 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4935);
+  }
+  /* parser/parser.nit:4937 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4937);
+  }
+  /* parser/parser.nit:4939 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4939);
+  }
+  /* parser/parser.nit:4941 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4941);
+  }
+  /* parser/parser.nit:4943 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4943);
+  }
+  /* parser/parser.nit:4944 */
+  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:4946 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4946);
+  }
+  /* parser/parser.nit:4947 */
+  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:4949 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4949);
+  }
+  /* parser/parser.nit:4950 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4963 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4964 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4964);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction93___action[] = "parser::ReduceAction93::(parser::ReduceAction::action)";
+void parser___ReduceAction93___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4969;
+  fra.me.meth = LOCATE_parser___ReduceAction93___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4971 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4972 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4973 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4974 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4975 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4976 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4977 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4978 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4979 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4980 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4981 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4982 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4983 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4985 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4985);
+  }
+  /* parser/parser.nit:4987 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4987);
+  }
+  /* parser/parser.nit:4989 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4989);
+  }
+  /* parser/parser.nit:4991 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4991);
+  }
+  /* parser/parser.nit:4992 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4994 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4994);
+  }
+  /* parser/parser.nit:4995 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:4996 */
+  fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
+  /* parser/parser.nit:5003 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5003);
+  }
+  /* parser/parser.nit:5004 */
+  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:5006 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5006);
+  }
+  /* parser/parser.nit:5007 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[13], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:5020 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5021 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5021);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction94___action[] = "parser::ReduceAction94::(parser::ReduceAction::action)";
+void parser___ReduceAction94___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5026;
+  fra.me.meth = LOCATE_parser___ReduceAction94___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5028 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5029 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5030 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5031 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5032 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5033 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5034 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5035 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5036 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5037 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5038 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5039 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5040 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5041 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5043 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5043);
+  }
+  /* parser/parser.nit:5045 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5045);
+  }
+  /* parser/parser.nit:5047 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5047);
+  }
+  /* parser/parser.nit:5049 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5049);
+  }
+  /* parser/parser.nit:5051 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5051);
+  }
+  /* parser/parser.nit:5052 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5054 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5054);
+  }
+  /* parser/parser.nit:5055 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:5056 */
+  fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
+  /* parser/parser.nit:5063 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5063);
+  }
+  /* parser/parser.nit:5064 */
+  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:5066 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5066);
+  }
+  /* parser/parser.nit:5067 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[14], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5080 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5081 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5081);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction95___action[] = "parser::ReduceAction95::(parser::ReduceAction::action)";
+void parser___ReduceAction95___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5086;
+  fra.me.meth = LOCATE_parser___ReduceAction95___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5088 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5089 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5090 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5091 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5092 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5093 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5094 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5095 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5096 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5097 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5098 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5099 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5100 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5101 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5103 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5103);
+  }
+  /* parser/parser.nit:5105 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5105);
+  }
+  /* parser/parser.nit:5107 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5107);
+  }
+  /* parser/parser.nit:5109 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5109);
+  }
+  /* parser/parser.nit:5111 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5111);
+  }
+  /* parser/parser.nit:5112 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:5113 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5115 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5115);
+  }
+  /* parser/parser.nit:5116 */
+  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:5117 */
+  fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:5124 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5124);
+  }
+  /* parser/parser.nit:5125 */
+  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:5127 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5127);
+  }
+  /* parser/parser.nit:5128 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5141 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5142 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5142);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction96___action[] = "parser::ReduceAction96::(parser::ReduceAction::action)";
+void parser___ReduceAction96___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5147;
+  fra.me.meth = LOCATE_parser___ReduceAction96___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5149 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5150 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5151 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5152 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5153 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5154 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5155 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5156 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5157 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5158 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5159 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5160 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5161 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5162 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5163 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5165 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5165);
+  }
+  /* parser/parser.nit:5167 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5167);
+  }
+  /* parser/parser.nit:5169 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5169);
+  }
+  /* parser/parser.nit:5171 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5171);
+  }
+  /* parser/parser.nit:5173 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5173);
+  }
+  /* parser/parser.nit:5175 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5175);
+  }
+  /* parser/parser.nit:5176 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:5177 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5179 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5179);
+  }
+  /* parser/parser.nit:5180 */
+  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:5181 */
+  fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:5188 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5188);
+  }
+  /* parser/parser.nit:5189 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:5191 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5191);
+  }
+  /* parser/parser.nit:5192 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:5205 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5206 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5206);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction97___action[] = "parser::ReduceAction97::(parser::ReduceAction::action)";
+void parser___ReduceAction97___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5211;
+  fra.me.meth = LOCATE_parser___ReduceAction97___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5213 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5214 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5215 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5216 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5217 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5218 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5219 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5220 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5221 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5222 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5223 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5224 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5225 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5227 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5227);
+  }
+  /* parser/parser.nit:5229 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5229);
+  }
+  /* parser/parser.nit:5231 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5231);
+  }
+  /* parser/parser.nit:5233 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5233);
+  }
+  /* parser/parser.nit:5235 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5235);
+  }
+  /* parser/parser.nit:5237 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5237);
+  }
+  /* parser/parser.nit:5238 */
+  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:5240 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5240);
+  }
+  /* parser/parser.nit:5241 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[5], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:5254 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5255 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5255);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction98___action[] = "parser::ReduceAction98::(parser::ReduceAction::action)";
+void parser___ReduceAction98___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5260;
+  fra.me.meth = LOCATE_parser___ReduceAction98___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5262 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5263 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5264 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5265 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5266 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5267 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5268 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5269 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5270 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5271 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5272 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5273 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5274 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5275 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5277 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5277);
+  }
+  /* parser/parser.nit:5279 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5279);
+  }
+  /* parser/parser.nit:5281 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5281);
+  }
+  /* parser/parser.nit:5283 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5283);
+  }
+  /* parser/parser.nit:5285 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5285);
+  }
+  /* parser/parser.nit:5287 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5287);
+  }
+  /* parser/parser.nit:5289 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5289);
+  }
+  /* parser/parser.nit:5290 */
+  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:5292 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5292);
+  }
+  /* parser/parser.nit:5293 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5306 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5307 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5307);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction99___action[] = "parser::ReduceAction99::(parser::ReduceAction::action)";
+void parser___ReduceAction99___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5312;
+  fra.me.meth = LOCATE_parser___ReduceAction99___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5314 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5315 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5316 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5317 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5318 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5319 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5320 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5321 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5322 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5323 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5324 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5325 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5326 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5327 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5329 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5329);
+  }
+  /* parser/parser.nit:5331 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5331);
+  }
+  /* parser/parser.nit:5333 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5333);
+  }
+  /* parser/parser.nit:5335 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5335);
+  }
+  /* parser/parser.nit:5337 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5337);
+  }
+  /* parser/parser.nit:5338 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:5340 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5340);
+  }
+  /* parser/parser.nit:5342 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5342);
+  }
+  /* parser/parser.nit:5343 */
+  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:5345 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5345);
+  }
+  /* parser/parser.nit:5346 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5359 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5360 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5360);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction100___action[] = "parser::ReduceAction100::(parser::ReduceAction::action)";
+void parser___ReduceAction100___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5365;
+  fra.me.meth = LOCATE_parser___ReduceAction100___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5367 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5368 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5369 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5370 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5371 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5372 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5373 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5374 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5375 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5376 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5377 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5378 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5379 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5380 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5381 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5383 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5383);
+  }
+  /* parser/parser.nit:5385 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5385);
+  }
+  /* parser/parser.nit:5387 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5387);
+  }
+  /* parser/parser.nit:5389 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5389);
+  }
+  /* parser/parser.nit:5391 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5391);
+  }
+  /* parser/parser.nit:5393 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5393);
+  }
+  /* parser/parser.nit:5394 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:5396 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5396);
+  }
+  /* parser/parser.nit:5398 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5398);
+  }
+  /* parser/parser.nit:5399 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:5401 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5401);
+  }
+  /* parser/parser.nit:5402 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:5415 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5416 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5416);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction101___action[] = "parser::ReduceAction101::(parser::ReduceAction::action)";
+void parser___ReduceAction101___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5421;
+  fra.me.meth = LOCATE_parser___ReduceAction101___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5423 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5424 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5425 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5426 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5427 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5428 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5429 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5430 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5431 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5432 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5433 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5434 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5435 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5436 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5438 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5438);
+  }
+  /* parser/parser.nit:5440 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5440);
+  }
+  /* parser/parser.nit:5442 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5442);
+  }
+  /* parser/parser.nit:5444 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5444);
+  }
+  /* parser/parser.nit:5445 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5447 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5447);
+  }
+  /* parser/parser.nit:5448 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[6]);
+  fra.me.REG[14] = fra.me.REG[6];
+  /* parser/parser.nit:5449 */
+  fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
+  /* parser/parser.nit:5456 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5456);
+  }
+  /* parser/parser.nit:5458 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5458);
+  }
+  /* parser/parser.nit:5459 */
+  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:5461 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5461);
+  }
+  /* parser/parser.nit:5462 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[14], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5475 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5476 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5476);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction102___action[] = "parser::ReduceAction102::(parser::ReduceAction::action)";
+void parser___ReduceAction102___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5481;
+  fra.me.meth = LOCATE_parser___ReduceAction102___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5483 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5484 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5485 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5486 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5487 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5488 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5489 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5490 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5491 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5492 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5493 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5494 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5495 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5496 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5497 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5499 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5499);
+  }
+  /* parser/parser.nit:5501 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5501);
+  }
+  /* parser/parser.nit:5503 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5503);
+  }
+  /* parser/parser.nit:5505 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5505);
+  }
+  /* parser/parser.nit:5507 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5507);
+  }
+  /* parser/parser.nit:5508 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5510 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5510);
+  }
+  /* parser/parser.nit:5511 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[6]);
+  fra.me.REG[15] = fra.me.REG[6];
+  /* parser/parser.nit:5512 */
+  fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
+  /* parser/parser.nit:5519 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5519);
+  }
+  /* parser/parser.nit:5521 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5521);
+  }
+  /* parser/parser.nit:5522 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:5524 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5524);
+  }
+  /* parser/parser.nit:5525 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[15], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:5538 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5539 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5539);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction103___action[] = "parser::ReduceAction103::(parser::ReduceAction::action)";
+void parser___ReduceAction103___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5544;
+  fra.me.meth = LOCATE_parser___ReduceAction103___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5546 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5547 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5548 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5549 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5550 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5551 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5552 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5553 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5554 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5555 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5556 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5557 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5558 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5559 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5560 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5562 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5562);
+  }
+  /* parser/parser.nit:5564 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5564);
+  }
+  /* parser/parser.nit:5566 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5566);
+  }
+  /* parser/parser.nit:5568 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5568);
+  }
+  /* parser/parser.nit:5570 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5570);
+  }
+  /* parser/parser.nit:5571 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
+  fra.me.REG[12] = fra.me.REG[7];
+  /* parser/parser.nit:5572 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5574 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5574);
+  }
+  /* parser/parser.nit:5575 */
+  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:5576 */
+  fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
+  /* parser/parser.nit:5583 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5583);
+  }
+  /* parser/parser.nit:5585 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5585);
+  }
+  /* parser/parser.nit:5586 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:5588 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5588);
+  }
+  /* parser/parser.nit:5589 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[7], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:5602 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5603 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5603);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction104___action[] = "parser::ReduceAction104::(parser::ReduceAction::action)";
+void parser___ReduceAction104___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5608;
+  fra.me.meth = LOCATE_parser___ReduceAction104___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5610 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5611 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5612 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5613 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5614 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5615 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5616 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5617 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5618 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5619 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5620 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5621 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5622 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5623 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5624 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5625 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5627 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5627);
+  }
+  /* parser/parser.nit:5629 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5629);
+  }
+  /* parser/parser.nit:5631 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5631);
+  }
+  /* parser/parser.nit:5633 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5633);
+  }
+  /* parser/parser.nit:5635 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5635);
+  }
+  /* parser/parser.nit:5637 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5637);
+  }
+  /* parser/parser.nit:5638 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
+  fra.me.REG[13] = fra.me.REG[7];
+  /* parser/parser.nit:5639 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5641 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5641);
+  }
+  /* parser/parser.nit:5642 */
+  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:5643 */
+  fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
+  /* parser/parser.nit:5650 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5650);
+  }
+  /* parser/parser.nit:5652 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5652);
+  }
+  /* parser/parser.nit:5653 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:5655 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5655);
+  }
+  /* parser/parser.nit:5656 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[7], fra.me.REG[5], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:5669 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5670 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5670);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction105___action[] = "parser::ReduceAction105::(parser::ReduceAction::action)";
+void parser___ReduceAction105___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5675;
+  fra.me.meth = LOCATE_parser___ReduceAction105___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5677 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5678 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5679 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5680 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5681 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5682 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5683 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5684 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5685 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5686 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5687 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5688 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5690 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5690);
+  }
+  /* parser/parser.nit:5692 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5692);
+  }
+  /* parser/parser.nit:5694 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5694);
+  }
+  /* parser/parser.nit:5696 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5696);
+  }
+  /* parser/parser.nit:5698 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5698);
+  }
+  /* parser/parser.nit:5699 */
+  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:5701 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5701);
+  }
+  /* parser/parser.nit:5702 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:5715 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5716 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5716);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction106___action[] = "parser::ReduceAction106::(parser::ReduceAction::action)";
+void parser___ReduceAction106___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5721;
+  fra.me.meth = LOCATE_parser___ReduceAction106___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5723 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5724 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5725 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5726 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5727 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5728 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5729 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5730 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5731 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5732 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5733 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5734 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5735 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5737 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5737);
+  }
+  /* parser/parser.nit:5739 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5739);
+  }
+  /* parser/parser.nit:5741 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5741);
+  }
+  /* parser/parser.nit:5743 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5743);
+  }
+  /* parser/parser.nit:5745 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5745);
+  }
+  /* parser/parser.nit:5747 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5747);
+  }
+  /* parser/parser.nit:5748 */
+  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:5750 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5750);
+  }
+  /* parser/parser.nit:5751 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:5764 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5765 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5765);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction107___action[] = "parser::ReduceAction107::(parser::ReduceAction::action)";
+void parser___ReduceAction107___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5770;
+  fra.me.meth = LOCATE_parser___ReduceAction107___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5772 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5773 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5774 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5775 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5776 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5777 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5778 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5779 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5780 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5781 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5782 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5783 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5784 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5786 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5786);
+  }
+  /* parser/parser.nit:5788 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5788);
+  }
+  /* parser/parser.nit:5790 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5790);
+  }
+  /* parser/parser.nit:5792 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5792);
+  }
+  /* parser/parser.nit:5794 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5794);
+  }
+  /* parser/parser.nit:5795 */
+  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:5797 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5797);
+  }
+  /* parser/parser.nit:5798 */
+  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:5800 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5800);
+  }
+  /* parser/parser.nit:5801 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:5814 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5815 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5815);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction108___action[] = "parser::ReduceAction108::(parser::ReduceAction::action)";
+void parser___ReduceAction108___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5820;
+  fra.me.meth = LOCATE_parser___ReduceAction108___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5822 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5823 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5824 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5825 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5826 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5827 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5828 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5829 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5830 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5831 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5832 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5833 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5834 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5835 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5837 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5837);
+  }
+  /* parser/parser.nit:5839 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5839);
+  }
+  /* parser/parser.nit:5841 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5841);
+  }
+  /* parser/parser.nit:5843 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5843);
+  }
+  /* parser/parser.nit:5845 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5845);
+  }
+  /* parser/parser.nit:5847 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5847);
+  }
+  /* parser/parser.nit:5848 */
+  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:5850 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5850);
+  }
+  /* parser/parser.nit:5851 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:5853 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5853);
+  }
+  /* parser/parser.nit:5854 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5867 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5868 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5868);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction109___action[] = "parser::ReduceAction109::(parser::ReduceAction::action)";
+void parser___ReduceAction109___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5873;
+  fra.me.meth = LOCATE_parser___ReduceAction109___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5875 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5876 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5877 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5878 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5879 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5880 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5881 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5882 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5883 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5884 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5885 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5886 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5887 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5889 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5889);
+  }
+  /* parser/parser.nit:5891 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5891);
+  }
+  /* parser/parser.nit:5893 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5893);
+  }
+  /* parser/parser.nit:5895 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5895);
+  }
+  /* parser/parser.nit:5896 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5898 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5898);
+  }
+  /* parser/parser.nit:5899 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:5900 */
+  fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
+  /* parser/parser.nit:5907 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5907);
+  }
+  /* parser/parser.nit:5908 */
+  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:5910 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5910);
+  }
+  /* parser/parser.nit:5911 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[13], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:5924 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5925 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5925);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction110___action[] = "parser::ReduceAction110::(parser::ReduceAction::action)";
+void parser___ReduceAction110___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5930;
+  fra.me.meth = LOCATE_parser___ReduceAction110___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5932 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5933 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5934 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5935 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5936 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5937 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5938 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5939 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5940 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5941 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5942 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5943 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5944 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5945 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5947 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5947);
+  }
+  /* parser/parser.nit:5949 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5949);
+  }
+  /* parser/parser.nit:5951 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5951);
+  }
+  /* parser/parser.nit:5953 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5953);
+  }
+  /* parser/parser.nit:5955 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5955);
+  }
+  /* parser/parser.nit:5956 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5958 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5958);
+  }
+  /* parser/parser.nit:5959 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:5960 */
+  fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
+  /* parser/parser.nit:5967 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5967);
+  }
+  /* parser/parser.nit:5968 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:5970 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5970);
+  }
+  /* parser/parser.nit:5971 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[14], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:5984 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5985 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5985);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction111___action[] = "parser::ReduceAction111::(parser::ReduceAction::action)";
+void parser___ReduceAction111___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 5990;
+  fra.me.meth = LOCATE_parser___ReduceAction111___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5992 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5993 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5994 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5995 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5996 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5997 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5998 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5999 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6000 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6001 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6002 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6003 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6004 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6005 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6007 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6007);
+  }
+  /* parser/parser.nit:6009 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6009);
+  }
+  /* parser/parser.nit:6011 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6011);
+  }
+  /* parser/parser.nit:6013 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6013);
+  }
+  /* parser/parser.nit:6015 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6015);
+  }
+  /* parser/parser.nit:6016 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:6017 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6019 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6019);
+  }
+  /* parser/parser.nit:6020 */
+  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:6021 */
+  fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:6028 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6028);
+  }
+  /* parser/parser.nit:6029 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6031 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6031);
+  }
+  /* parser/parser.nit:6032 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6045 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6046 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6046);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction112___action[] = "parser::ReduceAction112::(parser::ReduceAction::action)";
+void parser___ReduceAction112___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6051;
+  fra.me.meth = LOCATE_parser___ReduceAction112___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6053 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6054 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6055 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6056 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6057 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6058 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6059 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6060 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6061 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6062 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6063 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6064 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6065 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6066 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6067 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6069 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6069);
+  }
+  /* parser/parser.nit:6071 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6071);
+  }
+  /* parser/parser.nit:6073 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6073);
+  }
+  /* parser/parser.nit:6075 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6075);
+  }
+  /* parser/parser.nit:6077 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6077);
+  }
+  /* parser/parser.nit:6079 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6079);
+  }
+  /* parser/parser.nit:6080 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:6081 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6083 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6083);
+  }
+  /* parser/parser.nit:6084 */
+  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:6085 */
+  fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:6092 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6092);
+  }
+  /* parser/parser.nit:6093 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6095 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6095);
+  }
+  /* parser/parser.nit:6096 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6109 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6110 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6110);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction113___action[] = "parser::ReduceAction113::(parser::ReduceAction::action)";
+void parser___ReduceAction113___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 6115;
+  fra.me.meth = LOCATE_parser___ReduceAction113___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6117 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6118 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6119 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6120 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6121 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6122 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6123 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6124 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6125 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6126 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6127 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6128 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6129 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6131 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6131);
+  }
+  /* parser/parser.nit:6133 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6133);
+  }
+  /* parser/parser.nit:6135 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6135);
+  }
+  /* parser/parser.nit:6137 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6137);
+  }
+  /* parser/parser.nit:6139 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6139);
+  }
+  /* parser/parser.nit:6141 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6141);
+  }
+  /* parser/parser.nit:6142 */
+  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:6144 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6144);
+  }
+  /* parser/parser.nit:6145 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[5], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:6158 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6159 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6159);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction114___action[] = "parser::ReduceAction114::(parser::ReduceAction::action)";
+void parser___ReduceAction114___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 6164;
+  fra.me.meth = LOCATE_parser___ReduceAction114___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6166 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6167 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6168 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6169 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6170 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6171 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6172 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6173 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6174 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6175 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6176 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6177 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6178 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6179 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6181 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6181);
+  }
+  /* parser/parser.nit:6183 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6183);
+  }
+  /* parser/parser.nit:6185 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6185);
+  }
+  /* parser/parser.nit:6187 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6187);
+  }
+  /* parser/parser.nit:6189 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6189);
+  }
+  /* parser/parser.nit:6191 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6191);
+  }
+  /* parser/parser.nit:6193 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6193);
+  }
+  /* parser/parser.nit:6194 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6196 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6196);
+  }
+  /* parser/parser.nit:6197 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6210 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6211 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6211);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction115___action[] = "parser::ReduceAction115::(parser::ReduceAction::action)";
+void parser___ReduceAction115___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 6216;
+  fra.me.meth = LOCATE_parser___ReduceAction115___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6218 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6219 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6220 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6221 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6222 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6223 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6224 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6225 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6226 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6227 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6228 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6229 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6230 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6231 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6233 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6233);
+  }
+  /* parser/parser.nit:6235 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6235);
+  }
+  /* parser/parser.nit:6237 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6237);
+  }
+  /* parser/parser.nit:6239 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6239);
+  }
+  /* parser/parser.nit:6241 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6241);
+  }
+  /* parser/parser.nit:6242 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:6244 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6244);
+  }
+  /* parser/parser.nit:6246 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6246);
+  }
+  /* parser/parser.nit:6247 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6249 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6249);
+  }
+  /* parser/parser.nit:6250 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6263 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6264 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6264);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction116___action[] = "parser::ReduceAction116::(parser::ReduceAction::action)";
+void parser___ReduceAction116___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6269;
+  fra.me.meth = LOCATE_parser___ReduceAction116___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6271 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6272 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6273 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6274 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6275 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6276 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6277 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6278 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6279 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6280 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6281 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6282 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6283 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6284 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6285 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6287 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6287);
+  }
+  /* parser/parser.nit:6289 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6289);
+  }
+  /* parser/parser.nit:6291 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6291);
+  }
+  /* parser/parser.nit:6293 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6293);
+  }
+  /* parser/parser.nit:6295 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6295);
+  }
+  /* parser/parser.nit:6297 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6297);
+  }
+  /* parser/parser.nit:6298 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:6300 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6300);
+  }
+  /* parser/parser.nit:6302 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6302);
+  }
+  /* parser/parser.nit:6303 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6305 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6305);
+  }
+  /* parser/parser.nit:6306 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6319 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6320 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6320);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction117___action[] = "parser::ReduceAction117::(parser::ReduceAction::action)";
+void parser___ReduceAction117___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6325;
+  fra.me.meth = LOCATE_parser___ReduceAction117___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6327 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6328 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6329 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6330 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6331 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6332 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6333 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6334 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6335 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6336 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6337 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6338 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6339 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6340 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6342 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6342);
+  }
+  /* parser/parser.nit:6344 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6344);
+  }
+  /* parser/parser.nit:6346 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6346);
+  }
+  /* parser/parser.nit:6348 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6348);
+  }
+  /* parser/parser.nit:6349 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6351 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6351);
+  }
+  /* parser/parser.nit:6352 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[6]);
+  fra.me.REG[14] = fra.me.REG[6];
+  /* parser/parser.nit:6353 */
+  fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
+  /* parser/parser.nit:6360 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6360);
+  }
+  /* parser/parser.nit:6362 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6362);
+  }
+  /* parser/parser.nit:6363 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6365 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6365);
+  }
+  /* parser/parser.nit:6366 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[14], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6379 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6380 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6380);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction118___action[] = "parser::ReduceAction118::(parser::ReduceAction::action)";
+void parser___ReduceAction118___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6385;
+  fra.me.meth = LOCATE_parser___ReduceAction118___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6387 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6388 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6389 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6390 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6391 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6392 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6393 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6394 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6395 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6396 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6397 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6398 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6399 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6400 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6401 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6403 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6403);
+  }
+  /* parser/parser.nit:6405 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6405);
+  }
+  /* parser/parser.nit:6407 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6407);
+  }
+  /* parser/parser.nit:6409 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6409);
+  }
+  /* parser/parser.nit:6411 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6411);
+  }
+  /* parser/parser.nit:6412 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6414 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6414);
+  }
+  /* parser/parser.nit:6415 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[6]);
+  fra.me.REG[15] = fra.me.REG[6];
+  /* parser/parser.nit:6416 */
+  fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
+  /* parser/parser.nit:6423 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6423);
+  }
+  /* parser/parser.nit:6425 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6425);
+  }
+  /* parser/parser.nit:6426 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6428 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6428);
+  }
+  /* parser/parser.nit:6429 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[15], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6442 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6443 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6443);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction119___action[] = "parser::ReduceAction119::(parser::ReduceAction::action)";
+void parser___ReduceAction119___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6448;
+  fra.me.meth = LOCATE_parser___ReduceAction119___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6450 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6451 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6452 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6453 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6454 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6455 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6456 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6457 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6458 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6459 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6460 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6461 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6462 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6463 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6464 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6466 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6466);
+  }
+  /* parser/parser.nit:6468 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6468);
+  }
+  /* parser/parser.nit:6470 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6470);
+  }
+  /* parser/parser.nit:6472 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6472);
+  }
+  /* parser/parser.nit:6474 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6474);
+  }
+  /* parser/parser.nit:6475 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
+  fra.me.REG[12] = fra.me.REG[7];
+  /* parser/parser.nit:6476 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6478 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6478);
+  }
+  /* parser/parser.nit:6479 */
+  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:6480 */
+  fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
+  /* parser/parser.nit:6487 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6487);
+  }
+  /* parser/parser.nit:6489 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6489);
+  }
+  /* parser/parser.nit:6490 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6492 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6492);
+  }
+  /* parser/parser.nit:6493 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[7], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6506 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6507 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6507);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction120___action[] = "parser::ReduceAction120::(parser::ReduceAction::action)";
+void parser___ReduceAction120___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6512;
+  fra.me.meth = LOCATE_parser___ReduceAction120___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6514 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6515 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6516 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6517 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6518 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6519 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6520 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6521 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6522 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6523 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6524 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6525 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6526 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6527 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6528 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6529 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6531 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6531);
+  }
+  /* parser/parser.nit:6533 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6533);
+  }
+  /* parser/parser.nit:6535 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6535);
+  }
+  /* parser/parser.nit:6537 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6537);
+  }
+  /* parser/parser.nit:6539 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6539);
+  }
+  /* parser/parser.nit:6541 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6541);
+  }
+  /* parser/parser.nit:6542 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
+  fra.me.REG[13] = fra.me.REG[7];
+  /* parser/parser.nit:6543 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6545 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6545);
+  }
+  /* parser/parser.nit:6546 */
+  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:6547 */
+  fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
+  /* parser/parser.nit:6554 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6554);
+  }
+  /* parser/parser.nit:6556 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6556);
+  }
+  /* parser/parser.nit:6557 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
+  fra.me.REG[15] = fra.me.REG[4];
+  /* parser/parser.nit:6559 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6559);
+  }
+  /* parser/parser.nit:6560 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[7], fra.me.REG[5], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:6573 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6574 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6574);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction121___action[] = "parser::ReduceAction121::(parser::ReduceAction::action)";
+void parser___ReduceAction121___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 6579;
+  fra.me.meth = LOCATE_parser___ReduceAction121___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6581 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6582 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6583 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6584 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6585 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6586 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6587 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6588 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6589 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6590 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6591 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6592 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6593 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6595 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6595);
+  }
+  /* parser/parser.nit:6597 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6597);
+  }
+  /* parser/parser.nit:6599 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6599);
+  }
+  /* parser/parser.nit:6601 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6601);
+  }
+  /* parser/parser.nit:6603 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6603);
+  }
+  /* parser/parser.nit:6604 */
+  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:6606 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6606);
+  }
+  /* parser/parser.nit:6607 */
+  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:6609 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6609);
+  }
+  /* parser/parser.nit:6610 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:6623 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6624 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6624);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction122___action[] = "parser::ReduceAction122::(parser::ReduceAction::action)";
+void parser___ReduceAction122___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 6629;
+  fra.me.meth = LOCATE_parser___ReduceAction122___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6631 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6632 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6633 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6634 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6635 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6636 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6637 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6638 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6639 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6640 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6641 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6642 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6643 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6644 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6646 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6646);
+  }
+  /* parser/parser.nit:6648 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6648);
+  }
+  /* parser/parser.nit:6650 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6650);
+  }
+  /* parser/parser.nit:6652 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6652);
+  }
+  /* parser/parser.nit:6654 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6654);
+  }
+  /* parser/parser.nit:6656 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6656);
+  }
+  /* parser/parser.nit:6657 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:6659 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6659);
+  }
+  /* parser/parser.nit:6660 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6662 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6662);
+  }
+  /* parser/parser.nit:6663 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6676 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6677 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6677);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction123___action[] = "parser::ReduceAction123::(parser::ReduceAction::action)";
+void parser___ReduceAction123___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 6682;
+  fra.me.meth = LOCATE_parser___ReduceAction123___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6684 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6685 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6686 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6687 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6688 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6689 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6690 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6691 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6692 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6693 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6694 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6695 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6696 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6697 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6699 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6699);
+  }
+  /* parser/parser.nit:6701 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6701);
+  }
+  /* parser/parser.nit:6703 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6703);
+  }
+  /* parser/parser.nit:6705 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6705);
+  }
+  /* parser/parser.nit:6707 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6707);
+  }
+  /* parser/parser.nit:6708 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:6710 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6710);
+  }
+  /* parser/parser.nit:6711 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:6713 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6713);
+  }
+  /* parser/parser.nit:6714 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6716 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6716);
+  }
+  /* parser/parser.nit:6717 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6730 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6731 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6731);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction124___action[] = "parser::ReduceAction124::(parser::ReduceAction::action)";
+void parser___ReduceAction124___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6736;
+  fra.me.meth = LOCATE_parser___ReduceAction124___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6738 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6739 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6740 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6741 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6742 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6743 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6744 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6745 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6746 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6747 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6748 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6749 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6750 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6751 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6752 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6754 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6754);
+  }
+  /* parser/parser.nit:6756 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6756);
+  }
+  /* parser/parser.nit:6758 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6758);
+  }
+  /* parser/parser.nit:6760 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6760);
+  }
+  /* parser/parser.nit:6762 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6762);
+  }
+  /* parser/parser.nit:6764 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6764);
+  }
+  /* parser/parser.nit:6765 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:6767 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6767);
+  }
+  /* parser/parser.nit:6768 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:6770 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6770);
+  }
+  /* parser/parser.nit:6771 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6773 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6773);
+  }
+  /* parser/parser.nit:6774 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6787 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6788 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6788);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction125___action[] = "parser::ReduceAction125::(parser::ReduceAction::action)";
+void parser___ReduceAction125___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6793;
+  fra.me.meth = LOCATE_parser___ReduceAction125___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6795 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6796 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6797 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6798 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6799 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6800 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6801 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6802 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6803 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6804 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6805 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6806 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6807 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6808 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6810 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6810);
+  }
+  /* parser/parser.nit:6812 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6812);
+  }
+  /* parser/parser.nit:6814 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6814);
+  }
+  /* parser/parser.nit:6816 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6816);
+  }
+  /* parser/parser.nit:6817 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6819 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6819);
+  }
+  /* parser/parser.nit:6820 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[6]);
+  fra.me.REG[14] = fra.me.REG[6];
+  /* parser/parser.nit:6821 */
+  fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
+  /* parser/parser.nit:6828 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6828);
+  }
+  /* parser/parser.nit:6829 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:6831 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6831);
+  }
+  /* parser/parser.nit:6832 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:6834 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6834);
+  }
+  /* parser/parser.nit:6835 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[14], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:6848 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6849 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6849);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction126___action[] = "parser::ReduceAction126::(parser::ReduceAction::action)";
+void parser___ReduceAction126___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6854;
+  fra.me.meth = LOCATE_parser___ReduceAction126___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6856 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6857 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6858 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6859 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6860 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6861 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6862 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6863 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6864 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6865 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6866 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6867 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6868 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6869 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6870 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6872 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6872);
+  }
+  /* parser/parser.nit:6874 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6874);
+  }
+  /* parser/parser.nit:6876 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6876);
+  }
+  /* parser/parser.nit:6878 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6878);
+  }
+  /* parser/parser.nit:6880 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6880);
+  }
+  /* parser/parser.nit:6881 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6883 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6883);
+  }
+  /* parser/parser.nit:6884 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[6]);
+  fra.me.REG[15] = fra.me.REG[6];
+  /* parser/parser.nit:6885 */
+  fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
+  /* parser/parser.nit:6892 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6892);
+  }
+  /* parser/parser.nit:6893 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:6895 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6895);
+  }
+  /* parser/parser.nit:6896 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6898 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6898);
+  }
+  /* parser/parser.nit:6899 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[15], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6912 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6913 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6913);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction127___action[] = "parser::ReduceAction127::(parser::ReduceAction::action)";
+void parser___ReduceAction127___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6918;
+  fra.me.meth = LOCATE_parser___ReduceAction127___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6920 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6921 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6922 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6923 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6924 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6925 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6926 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6927 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6928 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6929 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6930 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6931 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6932 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6933 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6934 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6936 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6936);
+  }
+  /* parser/parser.nit:6938 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6938);
+  }
+  /* parser/parser.nit:6940 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6940);
+  }
+  /* parser/parser.nit:6942 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6942);
+  }
+  /* parser/parser.nit:6944 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6944);
+  }
+  /* parser/parser.nit:6945 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
+  fra.me.REG[12] = fra.me.REG[7];
+  /* parser/parser.nit:6946 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6948 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6948);
+  }
+  /* parser/parser.nit:6949 */
+  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:6950 */
+  fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
+  /* parser/parser.nit:6957 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6957);
+  }
+  /* parser/parser.nit:6958 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:6960 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6960);
+  }
+  /* parser/parser.nit:6961 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:6963 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6963);
+  }
+  /* parser/parser.nit:6964 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[7], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:6977 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6978 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6978);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction128___action[] = "parser::ReduceAction128::(parser::ReduceAction::action)";
+void parser___ReduceAction128___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6983;
+  fra.me.meth = LOCATE_parser___ReduceAction128___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6985 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6986 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6987 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6988 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6989 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6990 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6991 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6992 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6993 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6994 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6995 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6996 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6997 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6998 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:6999 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7000 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7002 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7002);
+  }
+  /* parser/parser.nit:7004 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7004);
+  }
+  /* parser/parser.nit:7006 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7006);
+  }
+  /* parser/parser.nit:7008 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7008);
+  }
+  /* parser/parser.nit:7010 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7010);
+  }
+  /* parser/parser.nit:7012 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7012);
+  }
+  /* parser/parser.nit:7013 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
+  fra.me.REG[13] = fra.me.REG[7];
+  /* parser/parser.nit:7014 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7016 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7016);
+  }
+  /* parser/parser.nit:7017 */
+  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:7018 */
+  fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
+  /* parser/parser.nit:7025 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7025);
+  }
+  /* parser/parser.nit:7026 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:7028 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7028);
+  }
+  /* parser/parser.nit:7029 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
+  fra.me.REG[15] = fra.me.REG[4];
+  /* parser/parser.nit:7031 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7031);
+  }
+  /* parser/parser.nit:7032 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[7], NIT_NULL, fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:7045 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7046 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7046);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction129___action[] = "parser::ReduceAction129::(parser::ReduceAction::action)";
+void parser___ReduceAction129___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7051;
+  fra.me.meth = LOCATE_parser___ReduceAction129___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7053 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7054 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7055 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7056 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7057 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7058 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7059 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7060 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7061 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7062 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7063 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7064 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7065 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7066 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7068 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7068);
+  }
+  /* parser/parser.nit:7070 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7070);
+  }
+  /* parser/parser.nit:7072 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7072);
+  }
+  /* parser/parser.nit:7074 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7074);
+  }
+  /* parser/parser.nit:7076 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7076);
+  }
+  /* parser/parser.nit:7078 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7078);
+  }
+  /* parser/parser.nit:7079 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:7081 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7081);
+  }
+  /* parser/parser.nit:7082 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:7084 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7084);
+  }
+  /* parser/parser.nit:7085 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[6], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:7098 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7099 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7099);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction130___action[] = "parser::ReduceAction130::(parser::ReduceAction::action)";
+void parser___ReduceAction130___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7104;
+  fra.me.meth = LOCATE_parser___ReduceAction130___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7106 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7107 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7108 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7109 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7110 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7111 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7112 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7113 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7114 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7115 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7116 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7117 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7118 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7119 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7120 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7122 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7122);
+  }
+  /* parser/parser.nit:7124 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7124);
+  }
+  /* parser/parser.nit:7126 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7126);
+  }
+  /* parser/parser.nit:7128 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7128);
+  }
+  /* parser/parser.nit:7130 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7130);
+  }
+  /* parser/parser.nit:7132 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7132);
+  }
+  /* parser/parser.nit:7134 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7134);
+  }
+  /* parser/parser.nit:7135 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:7137 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7137);
+  }
+  /* parser/parser.nit:7138 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:7140 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7140);
+  }
+  /* parser/parser.nit:7141 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:7154 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7155 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7155);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction131___action[] = "parser::ReduceAction131::(parser::ReduceAction::action)";
+void parser___ReduceAction131___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7160;
+  fra.me.meth = LOCATE_parser___ReduceAction131___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7162 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7163 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7164 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7165 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7166 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7167 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7168 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7169 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7170 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7171 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7172 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7173 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7174 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7175 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7176 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7178 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7178);
+  }
+  /* parser/parser.nit:7180 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7180);
+  }
+  /* parser/parser.nit:7182 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7182);
+  }
+  /* parser/parser.nit:7184 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7184);
+  }
+  /* parser/parser.nit:7186 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7186);
+  }
+  /* parser/parser.nit:7187 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
+  fra.me.REG[12] = fra.me.REG[7];
+  /* parser/parser.nit:7189 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7189);
+  }
+  /* parser/parser.nit:7191 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7191);
+  }
+  /* parser/parser.nit:7192 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:7194 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7194);
+  }
+  /* parser/parser.nit:7195 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:7197 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7197);
+  }
+  /* parser/parser.nit:7198 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], NIT_NULL, fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:7211 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7212 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7212);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction132___action[] = "parser::ReduceAction132::(parser::ReduceAction::action)";
+void parser___ReduceAction132___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7217;
+  fra.me.meth = LOCATE_parser___ReduceAction132___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7224 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7225 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7226 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7227 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7228 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7229 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7230 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7231 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7232 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7233 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7234 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7236 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7236);
+  }
+  /* parser/parser.nit:7238 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7238);
+  }
+  /* parser/parser.nit:7240 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7240);
+  }
+  /* parser/parser.nit:7242 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7242);
+  }
+  /* parser/parser.nit:7244 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7244);
+  }
+  /* parser/parser.nit:7246 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7246);
+  }
+  /* parser/parser.nit:7247 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
+  fra.me.REG[13] = fra.me.REG[7];
+  /* parser/parser.nit:7249 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7249);
+  }
+  /* parser/parser.nit:7251 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7251);
+  }
+  /* parser/parser.nit:7252 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:7254 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7254);
+  }
+  /* parser/parser.nit:7255 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
+  fra.me.REG[15] = fra.me.REG[4];
+  /* parser/parser.nit:7257 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7257);
+  }
+  /* parser/parser.nit:7258 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], NIT_NULL, fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:7271 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7272 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7272);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction133___action[] = "parser::ReduceAction133::(parser::ReduceAction::action)";
+void parser___ReduceAction133___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7277;
+  fra.me.meth = LOCATE_parser___ReduceAction133___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7279 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7280 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7281 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7282 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7283 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7284 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7285 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7286 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7287 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7288 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7289 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7290 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7291 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7292 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7293 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7295 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7295);
+  }
+  /* parser/parser.nit:7297 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7297);
+  }
+  /* parser/parser.nit:7299 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7299);
+  }
+  /* parser/parser.nit:7301 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7301);
+  }
+  /* parser/parser.nit:7302 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7304 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7304);
+  }
+  /* parser/parser.nit:7305 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[7]);
+  fra.me.REG[15] = fra.me.REG[7];
+  /* parser/parser.nit:7306 */
+  fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
+  /* parser/parser.nit:7313 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7313);
+  }
+  /* parser/parser.nit:7315 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7315);
+  }
+  /* parser/parser.nit:7316 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:7318 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7318);
+  }
+  /* parser/parser.nit:7319 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:7321 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7321);
+  }
+  /* parser/parser.nit:7322 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[15], fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:7335 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7336 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7336);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction134___action[] = "parser::ReduceAction134::(parser::ReduceAction::action)";
+void parser___ReduceAction134___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7341;
+  fra.me.meth = LOCATE_parser___ReduceAction134___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 17;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[16] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7343 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7344 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7345 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7346 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7347 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7348 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7349 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7350 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7351 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7352 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7353 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7354 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7355 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7356 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7357 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7358 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7360 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7360);
+  }
+  /* parser/parser.nit:7362 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7362);
+  }
+  /* parser/parser.nit:7364 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7364);
+  }
+  /* parser/parser.nit:7366 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7366);
+  }
+  /* parser/parser.nit:7368 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7368);
+  }
+  /* parser/parser.nit:7369 */
+  fra.me.REG[16] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7371 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7371);
+  }
+  /* parser/parser.nit:7372 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[16], fra.me.REG[7]);
+  fra.me.REG[16] = fra.me.REG[7];
+  /* parser/parser.nit:7373 */
+  fra.me.REG[16] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[16], NIT_NULL);
+  /* parser/parser.nit:7380 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7380);
+  }
+  /* parser/parser.nit:7382 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7382);
+  }
+  /* parser/parser.nit:7383 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:7385 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7385);
+  }
+  /* parser/parser.nit:7386 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
+  fra.me.REG[15] = fra.me.REG[4];
+  /* parser/parser.nit:7388 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7388);
+  }
+  /* parser/parser.nit:7389 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[16], fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:7402 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7403 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7403);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction135___action[] = "parser::ReduceAction135::(parser::ReduceAction::action)";
+void parser___ReduceAction135___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7408;
+  fra.me.meth = LOCATE_parser___ReduceAction135___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7410 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7411 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7412 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7413 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7414 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7415 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7416 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7417 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7418 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7419 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7420 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7421 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7422 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7423 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7424 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7425 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7427 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7427);
+  }
+  /* parser/parser.nit:7429 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7429);
+  }
+  /* parser/parser.nit:7431 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7431);
+  }
+  /* parser/parser.nit:7433 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7433);
+  }
+  /* parser/parser.nit:7435 */
+  REGB0 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7435);
+  }
+  /* parser/parser.nit:7436 */
+  fra.me.REG[8] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[8]);
+  fra.me.REG[13] = fra.me.REG[8];
+  /* parser/parser.nit:7437 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7439 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7439);
+  }
+  /* parser/parser.nit:7440 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
+  fra.me.REG[8] = fra.me.REG[7];
+  /* parser/parser.nit:7441 */
+  fra.me.REG[8] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[8], NIT_NULL);
+  /* parser/parser.nit:7448 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7448);
+  }
+  /* parser/parser.nit:7450 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7450);
+  }
+  /* parser/parser.nit:7451 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:7453 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7453);
+  }
+  /* parser/parser.nit:7454 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
+  fra.me.REG[15] = fra.me.REG[4];
+  /* parser/parser.nit:7456 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7456);
+  }
+  /* parser/parser.nit:7457 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], NIT_NULL, fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[13], fra.me.REG[8], fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:7470 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7471 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7471);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction136___action[] = "parser::ReduceAction136::(parser::ReduceAction::action)";
+void parser___ReduceAction136___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7476;
+  fra.me.meth = LOCATE_parser___ReduceAction136___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 17;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[16] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7478 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7479 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7480 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7481 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7482 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7483 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7484 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7485 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7486 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7487 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7488 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7489 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7490 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7491 */
+  fra.me.REG[13] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7492 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7493 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7494 */
+  fra.me.REG[16] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7496 */
+  REGB0 = TAG_Bool((fra.me.REG[13]==NIT_NULL) || VAL_ISA(fra.me.REG[13], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7496);
+  }
+  /* parser/parser.nit:7498 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7498);
+  }
+  /* parser/parser.nit:7500 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7500);
+  }
+  /* parser/parser.nit:7502 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7502);
+  }
+  /* parser/parser.nit:7504 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7504);
+  }
+  /* parser/parser.nit:7506 */
+  REGB0 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7506);
+  }
+  /* parser/parser.nit:7507 */
+  fra.me.REG[8] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[8]);
+  fra.me.REG[14] = fra.me.REG[8];
+  /* parser/parser.nit:7508 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7510 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7510);
+  }
+  /* parser/parser.nit:7511 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
+  fra.me.REG[8] = fra.me.REG[7];
+  /* parser/parser.nit:7512 */
+  fra.me.REG[8] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[8], NIT_NULL);
+  /* parser/parser.nit:7519 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7519);
+  }
+  /* parser/parser.nit:7521 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7521);
+  }
+  /* parser/parser.nit:7522 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[5]);
+  fra.me.REG[15] = fra.me.REG[5];
+  /* parser/parser.nit:7524 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7524);
+  }
+  /* parser/parser.nit:7525 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[16], fra.me.REG[4]);
+  fra.me.REG[16] = fra.me.REG[4];
+  /* parser/parser.nit:7527 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7527);
+  }
+  /* parser/parser.nit:7528 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[13], fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[14], fra.me.REG[8], fra.me.REG[6], fra.me.REG[15], fra.me.REG[16], fra.me.REG[3]);
+  /* parser/parser.nit:7541 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7542 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7542);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction137___action[] = "parser::ReduceAction137::(parser::ReduceAction::action)";
+void parser___ReduceAction137___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7547;
+  fra.me.meth = LOCATE_parser___ReduceAction137___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7549 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7550 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7552 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7552);
+  }
+  /* parser/parser.nit:7553 */
+  fra.me.REG[3] = NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:7556 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7557 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7557);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction138___action[] = "parser::ReduceAction138::(parser::ReduceAction::action)";
+void parser___ReduceAction138___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7562;
+  fra.me.meth = LOCATE_parser___ReduceAction138___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7564 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7565 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7566 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7568 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwabstract, ID_parser___parser_nodes___TKwabstract)) /*cast nullable TKwabstract*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7568);
+  }
+  /* parser/parser.nit:7570 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7570);
+  }
+  /* parser/parser.nit:7571 */
+  fra.me.REG[3] = NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7575 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7576 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7576);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction139___action[] = "parser::ReduceAction139::(parser::ReduceAction::action)";
+void parser___ReduceAction139___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7581;
+  fra.me.meth = LOCATE_parser___ReduceAction139___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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:7586 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwinterface, ID_parser___parser_nodes___TKwinterface)) /*cast nullable TKwinterface*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7586);
+  }
+  /* parser/parser.nit:7587 */
+  fra.me.REG[3] = NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:7590 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7591 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7591);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction140___action[] = "parser::ReduceAction140::(parser::ReduceAction::action)";
+void parser___ReduceAction140___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7596;
+  fra.me.meth = LOCATE_parser___ReduceAction140___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7598 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7599 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7601 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwenum, ID_parser___parser_nodes___TKwenum)) /*cast nullable TKwenum*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7601);
+  }
+  /* parser/parser.nit:7602 */
+  fra.me.REG[3] = NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:7605 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7606 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7606);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction141___action[] = "parser::ReduceAction141::(parser::ReduceAction::action)";
+void parser___ReduceAction141___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7611;
+  fra.me.meth = LOCATE_parser___ReduceAction141___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7613 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7614 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7616 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast nullable TKwextern*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7616);
+  }
+  /* parser/parser.nit:7617 */
+  fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7621 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7622 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7622);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction142___action[] = "parser::ReduceAction142::(parser::ReduceAction::action)";
+void parser___ReduceAction142___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7627;
+  fra.me.meth = LOCATE_parser___ReduceAction142___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7629 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7630 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7631 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7633 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast nullable TKwextern*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7633);
+  }
+  /* parser/parser.nit:7635 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7635);
+  }
+  /* parser/parser.nit:7636 */
+  fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7640 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7641 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7641);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction143___action[] = "parser::ReduceAction143::(parser::ReduceAction::action)";
+void parser___ReduceAction143___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7646;
+  fra.me.meth = LOCATE_parser___ReduceAction143___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7648 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7649 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7650 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7651 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7652 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7653 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7654 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7656 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:7657 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:7659 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:7660 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7660);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction144___action[] = "parser::ReduceAction144::(parser::ReduceAction::action)";
+void parser___ReduceAction144___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7665;
+  fra.me.meth = LOCATE_parser___ReduceAction144___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7667 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7668 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7669 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7670 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7671 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7672 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7673 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7674 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:7677 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7677);
+  }
+  /* parser/parser.nit:7678 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:7679 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:7681 */
+  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:7682 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:7683 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7683);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction145___action[] = "parser::ReduceAction145::(parser::ReduceAction::action)";
+void parser___ReduceAction145___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7688;
+  fra.me.meth = LOCATE_parser___ReduceAction145___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7690 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7691 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7692 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7693 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7695 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7696 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7696);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction146___action[] = "parser::ReduceAction146::(parser::ReduceAction::action)";
+void parser___ReduceAction146___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7701;
+  fra.me.meth = LOCATE_parser___ReduceAction146___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7703 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7704 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7706 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7706);
+  }
+  /* parser/parser.nit:7707 */
+  fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:7712 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7713 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7713);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction147___action[] = "parser::ReduceAction147::(parser::ReduceAction::action)";
+void parser___ReduceAction147___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7718;
+  fra.me.meth = LOCATE_parser___ReduceAction147___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7720 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7721 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7722 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7724 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7724);
+  }
+  /* parser/parser.nit:7726 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7726);
+  }
+  /* parser/parser.nit:7727 */
+  fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7732 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7733 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7733);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction148___action[] = "parser::ReduceAction148::(parser::ReduceAction::action)";
+void parser___ReduceAction148___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7738;
+  fra.me.meth = LOCATE_parser___ReduceAction148___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7740 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7741 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7742 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7744 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7744);
+  }
+  /* parser/parser.nit:7746 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7746);
+  }
+  /* parser/parser.nit:7747 */
+  fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7752 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7753 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7753);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction149___action[] = "parser::ReduceAction149::(parser::ReduceAction::action)";
+void parser___ReduceAction149___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7758;
+  fra.me.meth = LOCATE_parser___ReduceAction149___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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:7763 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7765 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7765);
+  }
+  /* parser/parser.nit:7767 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7767);
+  }
+  /* parser/parser.nit:7769 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7769);
+  }
+  /* parser/parser.nit:7770 */
+  fra.me.REG[4] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:7775 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:7776 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7776);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction150___action[] = "parser::ReduceAction150::(parser::ReduceAction::action)";
+void parser___ReduceAction150___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7781;
+  fra.me.meth = LOCATE_parser___ReduceAction150___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7783 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7784 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7785 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7786 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7787 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7789 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7789);
+  }
+  /* parser/parser.nit:7791 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7791);
+  }
+  /* parser/parser.nit:7792 */
+  fra.me.REG[3] = NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7797 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7798 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7798);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction151___action[] = "parser::ReduceAction151::(parser::ReduceAction::action)";
+void parser___ReduceAction151___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7803;
+  fra.me.meth = LOCATE_parser___ReduceAction151___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7805 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7806 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7807 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7808 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7809 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7810 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7812 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7812);
+  }
+  /* parser/parser.nit:7814 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7814);
+  }
+  /* parser/parser.nit:7816 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7816);
+  }
+  /* parser/parser.nit:7817 */
+  fra.me.REG[3] = NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7822 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7823 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7823);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction152___action[] = "parser::ReduceAction152::(parser::ReduceAction::action)";
+void parser___ReduceAction152___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7828;
+  fra.me.meth = LOCATE_parser___ReduceAction152___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7830 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7831 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7832 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7834 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7835 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7835);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction153___action[] = "parser::ReduceAction153::(parser::ReduceAction::action)";
+void parser___ReduceAction153___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7840;
+  fra.me.meth = LOCATE_parser___ReduceAction153___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7842 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7843 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7844 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7845 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7846 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7847 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7848 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7849 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7851 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7851);
+  }
+  /* parser/parser.nit:7853 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7853);
+  }
+  /* parser/parser.nit:7855 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7855);
+  }
+  /* parser/parser.nit:7857 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7857);
+  }
+  /* parser/parser.nit:7859 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7859);
+  }
+  /* parser/parser.nit:7861 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7861);
+  }
+  /* parser/parser.nit:7862 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7872 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7873 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7873);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction154___action[] = "parser::ReduceAction154::(parser::ReduceAction::action)";
+void parser___ReduceAction154___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7878;
+  fra.me.meth = LOCATE_parser___ReduceAction154___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7880 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7881 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7882 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7883 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7884 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7885 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7886 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7887 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7888 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7890 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7890);
+  }
+  /* parser/parser.nit:7892 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7892);
+  }
+  /* parser/parser.nit:7894 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7894);
+  }
+  /* parser/parser.nit:7896 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7896);
+  }
+  /* parser/parser.nit:7898 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7898);
+  }
+  /* parser/parser.nit:7900 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7900);
+  }
+  /* parser/parser.nit:7902 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7902);
+  }
+  /* parser/parser.nit:7903 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7913 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7914 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7914);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction155___action[] = "parser::ReduceAction155::(parser::ReduceAction::action)";
+void parser___ReduceAction155___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7919;
+  fra.me.meth = LOCATE_parser___ReduceAction155___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7921 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7922 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7923 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7924 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7925 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7926 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7927 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7928 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7929 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7931 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7931);
+  }
+  /* parser/parser.nit:7933 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7933);
+  }
+  /* parser/parser.nit:7935 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7935);
+  }
+  /* parser/parser.nit:7937 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7937);
+  }
+  /* parser/parser.nit:7939 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7939);
+  }
+  /* parser/parser.nit:7941 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7941);
+  }
+  /* parser/parser.nit:7943 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7943);
+  }
+  /* parser/parser.nit:7944 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7954 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7955 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7955);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction156___action[] = "parser::ReduceAction156::(parser::ReduceAction::action)";
+void parser___ReduceAction156___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 7960;
+  fra.me.meth = LOCATE_parser___ReduceAction156___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7962 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7963 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7964 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7965 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7966 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7967 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7968 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7969 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7970 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7971 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7973 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7973);
+  }
+  /* parser/parser.nit:7975 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7975);
+  }
+  /* parser/parser.nit:7977 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7977);
+  }
+  /* parser/parser.nit:7979 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7979);
+  }
+  /* parser/parser.nit:7981 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7981);
+  }
+  /* parser/parser.nit:7983 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7983);
+  }
+  /* parser/parser.nit:7985 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7985);
+  }
+  /* parser/parser.nit:7987 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7987);
+  }
+  /* parser/parser.nit:7988 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7998 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7999 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7999);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction157___action[] = "parser::ReduceAction157::(parser::ReduceAction::action)";
+void parser___ReduceAction157___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8004;
+  fra.me.meth = LOCATE_parser___ReduceAction157___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8009 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8010 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8011 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8012 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8013 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8014 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8016 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8016);
+  }
+  /* parser/parser.nit:8018 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8018);
+  }
+  /* parser/parser.nit:8020 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8020);
+  }
+  /* parser/parser.nit:8022 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8022);
+  }
+  /* parser/parser.nit:8024 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8024);
+  }
+  /* parser/parser.nit:8026 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8026);
+  }
+  /* parser/parser.nit:8027 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8037 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8038 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8038);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction158___action[] = "parser::ReduceAction158::(parser::ReduceAction::action)";
+void parser___ReduceAction158___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8043;
+  fra.me.meth = LOCATE_parser___ReduceAction158___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8045 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8046 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8047 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8048 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8049 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8050 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8051 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8052 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8053 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8054 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8056 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8056);
+  }
+  /* parser/parser.nit:8058 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8058);
+  }
+  /* parser/parser.nit:8060 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8060);
+  }
+  /* parser/parser.nit:8062 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8062);
+  }
+  /* parser/parser.nit:8064 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8064);
+  }
+  /* parser/parser.nit:8066 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8066);
+  }
+  /* parser/parser.nit:8068 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8068);
+  }
+  /* parser/parser.nit:8069 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8079 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8080 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8080);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction159___action[] = "parser::ReduceAction159::(parser::ReduceAction::action)";
+void parser___ReduceAction159___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8085;
+  fra.me.meth = LOCATE_parser___ReduceAction159___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8087 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8088 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8089 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8090 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8091 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8092 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8093 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8094 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8095 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8096 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8098 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8098);
+  }
+  /* parser/parser.nit:8100 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8100);
+  }
+  /* parser/parser.nit:8102 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8102);
+  }
+  /* parser/parser.nit:8104 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8104);
+  }
+  /* parser/parser.nit:8106 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8106);
+  }
+  /* parser/parser.nit:8108 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8108);
+  }
+  /* parser/parser.nit:8110 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8110);
+  }
+  /* parser/parser.nit:8111 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8121 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8122 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8122);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction160___action[] = "parser::ReduceAction160::(parser::ReduceAction::action)";
+void parser___ReduceAction160___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8127;
+  fra.me.meth = LOCATE_parser___ReduceAction160___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8129 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8130 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8131 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8132 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8133 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8134 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8135 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8136 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8137 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8138 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8139 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8141 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8141);
+  }
+  /* parser/parser.nit:8143 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8143);
+  }
+  /* parser/parser.nit:8145 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8145);
+  }
+  /* parser/parser.nit:8147 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8147);
+  }
+  /* parser/parser.nit:8149 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8149);
+  }
+  /* parser/parser.nit:8151 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8151);
+  }
+  /* parser/parser.nit:8153 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8153);
+  }
+  /* parser/parser.nit:8155 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8155);
+  }
+  /* parser/parser.nit:8156 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8166 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8167 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8167);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction161___action[] = "parser::ReduceAction161::(parser::ReduceAction::action)";
+void parser___ReduceAction161___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8172;
+  fra.me.meth = LOCATE_parser___ReduceAction161___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8174 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8175 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8176 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8177 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8178 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8179 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8180 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8181 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8182 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8184 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8184);
+  }
+  /* parser/parser.nit:8186 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8186);
+  }
+  /* parser/parser.nit:8188 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8188);
+  }
+  /* parser/parser.nit:8190 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8190);
+  }
+  /* parser/parser.nit:8192 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8192);
+  }
+  /* parser/parser.nit:8194 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8194);
+  }
+  /* parser/parser.nit:8195 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8205 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8206 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8206);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction162___action[] = "parser::ReduceAction162::(parser::ReduceAction::action)";
+void parser___ReduceAction162___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8211;
+  fra.me.meth = LOCATE_parser___ReduceAction162___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8213 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8214 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8215 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8216 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8218 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8219 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8220 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8221 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8222 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8224 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8224);
+  }
+  /* parser/parser.nit:8226 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8226);
+  }
+  /* parser/parser.nit:8228 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8228);
+  }
+  /* parser/parser.nit:8230 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8230);
+  }
+  /* parser/parser.nit:8232 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8232);
+  }
+  /* parser/parser.nit:8234 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8234);
+  }
+  /* parser/parser.nit:8236 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8236);
+  }
+  /* parser/parser.nit:8237 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8247 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8248 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8248);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction163___action[] = "parser::ReduceAction163::(parser::ReduceAction::action)";
+void parser___ReduceAction163___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8253;
+  fra.me.meth = LOCATE_parser___ReduceAction163___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8255 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8256 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8257 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8258 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8259 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8260 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8261 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8263 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8263);
+  }
+  /* parser/parser.nit:8265 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8265);
+  }
+  /* parser/parser.nit:8267 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8267);
+  }
+  /* parser/parser.nit:8269 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8269);
+  }
+  /* parser/parser.nit:8271 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8271);
+  }
+  /* parser/parser.nit:8273 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8273);
+  }
+  /* parser/parser.nit:8274 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(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:8283 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8284 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8284);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction164___action[] = "parser::ReduceAction164::(parser::ReduceAction::action)";
+void parser___ReduceAction164___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8289;
+  fra.me.meth = LOCATE_parser___ReduceAction164___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8291 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8292 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8293 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8294 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8295 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8296 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8297 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8298 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8300 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8300);
+  }
+  /* parser/parser.nit:8302 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8302);
+  }
+  /* parser/parser.nit:8304 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8304);
+  }
+  /* parser/parser.nit:8306 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8306);
+  }
+  /* parser/parser.nit:8308 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8308);
+  }
+  /* parser/parser.nit:8310 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8310);
+  }
+  /* parser/parser.nit:8312 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8312);
+  }
+  /* parser/parser.nit:8313 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(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:8322 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8323 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8323);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction165___action[] = "parser::ReduceAction165::(parser::ReduceAction::action)";
+void parser___ReduceAction165___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8328;
+  fra.me.meth = LOCATE_parser___ReduceAction165___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8330 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8331 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8332 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8333 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8334 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8335 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8336 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8337 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8339 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8339);
+  }
+  /* parser/parser.nit:8341 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8341);
+  }
+  /* parser/parser.nit:8343 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8343);
+  }
+  /* parser/parser.nit:8345 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8345);
+  }
+  /* parser/parser.nit:8347 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8347);
+  }
+  /* parser/parser.nit:8348 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:8357 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8358 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8358);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction166___action[] = "parser::ReduceAction166::(parser::ReduceAction::action)";
+void parser___ReduceAction166___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8363;
+  fra.me.meth = LOCATE_parser___ReduceAction166___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8365 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8366 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8367 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8368 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8369 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8370 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8371 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8372 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8373 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8375 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8375);
+  }
+  /* parser/parser.nit:8377 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8377);
+  }
+  /* parser/parser.nit:8379 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8379);
+  }
+  /* parser/parser.nit:8381 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8381);
+  }
+  /* parser/parser.nit:8383 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8383);
+  }
+  /* parser/parser.nit:8385 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8385);
+  }
+  /* parser/parser.nit:8386 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:8395 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8396 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8396);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction167___action[] = "parser::ReduceAction167::(parser::ReduceAction::action)";
+void parser___ReduceAction167___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8401;
+  fra.me.meth = LOCATE_parser___ReduceAction167___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8403 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8404 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8405 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8406 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8407 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8408 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8409 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8410 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8412 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8412);
+  }
+  /* parser/parser.nit:8414 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8414);
+  }
+  /* parser/parser.nit:8416 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8416);
+  }
+  /* parser/parser.nit:8418 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8418);
+  }
+  /* parser/parser.nit:8420 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8420);
+  }
+  /* parser/parser.nit:8421 */
+  fra.me.REG[3] = NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8429 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8430 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8430);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction168___action[] = "parser::ReduceAction168::(parser::ReduceAction::action)";
+void parser___ReduceAction168___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8435;
+  fra.me.meth = LOCATE_parser___ReduceAction168___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8437 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8438 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8439 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8440 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8441 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8442 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8443 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8444 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8445 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8447 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8447);
+  }
+  /* parser/parser.nit:8449 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8449);
+  }
+  /* parser/parser.nit:8451 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8451);
+  }
+  /* parser/parser.nit:8453 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8453);
+  }
+  /* parser/parser.nit:8455 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8455);
+  }
+  /* parser/parser.nit:8457 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8457);
+  }
+  /* parser/parser.nit:8458 */
+  fra.me.REG[3] = NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8466 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8467 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8467);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction169___action[] = "parser::ReduceAction169::(parser::ReduceAction::action)";
+void parser___ReduceAction169___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8472;
+  fra.me.meth = LOCATE_parser___ReduceAction169___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8474 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8475 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8476 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8477 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8478 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8479 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8480 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8481 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8483 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8483);
+  }
+  /* parser/parser.nit:8485 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8485);
+  }
+  /* parser/parser.nit:8487 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8487);
+  }
+  /* parser/parser.nit:8489 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8489);
+  }
+  /* parser/parser.nit:8491 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8491);
+  }
+  /* parser/parser.nit:8492 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8503 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8504 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8504);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction170___action[] = "parser::ReduceAction170::(parser::ReduceAction::action)";
+void parser___ReduceAction170___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8509;
+  fra.me.meth = LOCATE_parser___ReduceAction170___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8511 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8512 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8513 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8514 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8515 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8516 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8517 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8518 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8519 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8521 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8521);
+  }
+  /* parser/parser.nit:8523 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8523);
+  }
+  /* parser/parser.nit:8525 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8525);
+  }
+  /* parser/parser.nit:8527 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8527);
+  }
+  /* parser/parser.nit:8529 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8529);
+  }
+  /* parser/parser.nit:8531 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8531);
+  }
+  /* parser/parser.nit:8532 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8543 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8544 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8544);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction171___action[] = "parser::ReduceAction171::(parser::ReduceAction::action)";
+void parser___ReduceAction171___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8549;
+  fra.me.meth = LOCATE_parser___ReduceAction171___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8551 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8552 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8553 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8554 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8555 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8556 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8557 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8558 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8559 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8561 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8561);
+  }
+  /* parser/parser.nit:8563 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8563);
+  }
+  /* parser/parser.nit:8565 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8565);
+  }
+  /* parser/parser.nit:8567 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8567);
+  }
+  /* parser/parser.nit:8569 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8569);
+  }
+  /* parser/parser.nit:8571 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8571);
+  }
+  /* parser/parser.nit:8572 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8583 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8584 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8584);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction172___action[] = "parser::ReduceAction172::(parser::ReduceAction::action)";
+void parser___ReduceAction172___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8589;
+  fra.me.meth = LOCATE_parser___ReduceAction172___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8591 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8592 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8593 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8594 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8595 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8596 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8597 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8598 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8599 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8600 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8602 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8602);
+  }
+  /* parser/parser.nit:8604 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8604);
+  }
+  /* parser/parser.nit:8606 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8606);
+  }
+  /* parser/parser.nit:8608 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8608);
+  }
+  /* parser/parser.nit:8610 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8610);
+  }
+  /* parser/parser.nit:8612 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8612);
+  }
+  /* parser/parser.nit:8614 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8614);
+  }
+  /* parser/parser.nit:8615 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8626 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8627 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8627);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction173___action[] = "parser::ReduceAction173::(parser::ReduceAction::action)";
+void parser___ReduceAction173___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8632;
+  fra.me.meth = LOCATE_parser___ReduceAction173___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8634 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8635 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8636 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8637 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8638 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8639 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8640 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8641 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8642 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8644 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8644);
+  }
+  /* parser/parser.nit:8646 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8646);
+  }
+  /* parser/parser.nit:8648 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8648);
+  }
+  /* parser/parser.nit:8650 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8650);
+  }
+  /* parser/parser.nit:8652 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8652);
+  }
+  /* parser/parser.nit:8654 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8654);
+  }
+  /* parser/parser.nit:8655 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:8666 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8667 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8667);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction174___action[] = "parser::ReduceAction174::(parser::ReduceAction::action)";
+void parser___ReduceAction174___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8672;
+  fra.me.meth = LOCATE_parser___ReduceAction174___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8674 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8675 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8676 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8677 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8678 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8679 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8680 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8681 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8682 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8683 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8685 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8685);
+  }
+  /* parser/parser.nit:8687 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8687);
+  }
+  /* parser/parser.nit:8689 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8689);
+  }
+  /* parser/parser.nit:8691 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8691);
+  }
+  /* parser/parser.nit:8693 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8693);
+  }
+  /* parser/parser.nit:8695 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8695);
+  }
+  /* parser/parser.nit:8697 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8697);
+  }
+  /* parser/parser.nit:8698 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:8709 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8710 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8710);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction175___action[] = "parser::ReduceAction175::(parser::ReduceAction::action)";
+void parser___ReduceAction175___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8715;
+  fra.me.meth = LOCATE_parser___ReduceAction175___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8717 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8718 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8719 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8720 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8721 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8722 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8723 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8724 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8725 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8726 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8728 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8728);
+  }
+  /* parser/parser.nit:8730 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8730);
+  }
+  /* parser/parser.nit:8732 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8732);
+  }
+  /* parser/parser.nit:8734 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8734);
+  }
+  /* parser/parser.nit:8736 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8736);
+  }
+  /* parser/parser.nit:8738 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
+  }
+  /* parser/parser.nit:8740 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8740);
+  }
+  /* parser/parser.nit:8741 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:8752 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8753 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8753);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction176___action[] = "parser::ReduceAction176::(parser::ReduceAction::action)";
+void parser___ReduceAction176___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8758;
+  fra.me.meth = LOCATE_parser___ReduceAction176___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8760 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8761 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8762 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8763 */
+  fra.me.REG[5] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8766 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8767 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8768 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8769 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8770 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8772 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8772);
+  }
+  /* parser/parser.nit:8774 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8774);
+  }
+  /* parser/parser.nit:8776 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8776);
+  }
+  /* parser/parser.nit:8778 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8778);
+  }
+  /* parser/parser.nit:8780 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8780);
+  }
+  /* parser/parser.nit:8782 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8782);
+  }
+  /* parser/parser.nit:8784 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8784);
+  }
+  /* parser/parser.nit:8786 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8786);
+  }
+  /* parser/parser.nit:8787 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:8798 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8799 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8799);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction177___action[] = "parser::ReduceAction177::(parser::ReduceAction::action)";
+void parser___ReduceAction177___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8804;
+  fra.me.meth = LOCATE_parser___ReduceAction177___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8806 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8807 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8808 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8809 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8810 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8811 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8812 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8813 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8814 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8816 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8816);
+  }
+  /* parser/parser.nit:8818 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8818);
+  }
+  /* parser/parser.nit:8820 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8820);
+  }
+  /* parser/parser.nit:8822 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8822);
+  }
+  /* parser/parser.nit:8824 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8824);
+  }
+  /* parser/parser.nit:8826 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8826);
+  }
+  /* parser/parser.nit:8827 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8838 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8839 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8839);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction178___action[] = "parser::ReduceAction178::(parser::ReduceAction::action)";
+void parser___ReduceAction178___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8844;
+  fra.me.meth = LOCATE_parser___ReduceAction178___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8846 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8847 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8848 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8849 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8850 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8851 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8852 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8853 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8854 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8855 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8857 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8857);
+  }
+  /* parser/parser.nit:8859 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8859);
+  }
+  /* parser/parser.nit:8861 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8861);
+  }
+  /* parser/parser.nit:8863 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8863);
+  }
+  /* parser/parser.nit:8865 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8865);
+  }
+  /* parser/parser.nit:8867 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8867);
+  }
+  /* parser/parser.nit:8869 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8869);
+  }
+  /* parser/parser.nit:8870 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8881 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8882 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8882);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction179___action[] = "parser::ReduceAction179::(parser::ReduceAction::action)";
+void parser___ReduceAction179___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8887;
+  fra.me.meth = LOCATE_parser___ReduceAction179___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8889 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8890 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8891 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8892 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8893 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8894 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8895 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8896 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8897 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8898 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8900 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8900);
+  }
+  /* parser/parser.nit:8902 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8902);
+  }
+  /* parser/parser.nit:8904 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8904);
+  }
+  /* parser/parser.nit:8906 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8906);
+  }
+  /* parser/parser.nit:8908 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8908);
+  }
+  /* parser/parser.nit:8910 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8910);
+  }
+  /* parser/parser.nit:8912 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8912);
+  }
+  /* parser/parser.nit:8913 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8924 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8925 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8925);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction180___action[] = "parser::ReduceAction180::(parser::ReduceAction::action)";
+void parser___ReduceAction180___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8930;
+  fra.me.meth = LOCATE_parser___ReduceAction180___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8932 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8933 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8934 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8935 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8936 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8937 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8938 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8939 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8940 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8941 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8942 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8944 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8944);
+  }
+  /* parser/parser.nit:8946 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8946);
+  }
+  /* parser/parser.nit:8948 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8948);
+  }
+  /* parser/parser.nit:8950 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8950);
+  }
+  /* parser/parser.nit:8952 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8952);
+  }
+  /* parser/parser.nit:8954 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8954);
+  }
+  /* parser/parser.nit:8956 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8956);
+  }
+  /* parser/parser.nit:8958 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8958);
+  }
+  /* parser/parser.nit:8959 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8970 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8971 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8971);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction181___action[] = "parser::ReduceAction181::(parser::ReduceAction::action)";
+void parser___ReduceAction181___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 8976;
+  fra.me.meth = LOCATE_parser___ReduceAction181___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8978 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8979 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8980 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8981 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8982 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8983 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8984 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8985 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8986 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8987 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8989 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8989);
+  }
+  /* parser/parser.nit:8991 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8991);
+  }
+  /* parser/parser.nit:8993 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8993);
+  }
+  /* parser/parser.nit:8995 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8995);
+  }
+  /* parser/parser.nit:8997 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8997);
+  }
+  /* parser/parser.nit:8999 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8999);
+  }
+  /* parser/parser.nit:9001 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9001);
+  }
+  /* parser/parser.nit:9002 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9013 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9014 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9014);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction182___action[] = "parser::ReduceAction182::(parser::ReduceAction::action)";
+void parser___ReduceAction182___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9019;
+  fra.me.meth = LOCATE_parser___ReduceAction182___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9021 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9022 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9023 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9024 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9025 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9026 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9027 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9028 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9029 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9030 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9031 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9033 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9033);
+  }
+  /* parser/parser.nit:9035 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9035);
+  }
+  /* parser/parser.nit:9037 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9037);
+  }
+  /* parser/parser.nit:9039 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9039);
+  }
+  /* parser/parser.nit:9041 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9041);
+  }
+  /* parser/parser.nit:9043 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9043);
+  }
+  /* parser/parser.nit:9045 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9045);
+  }
+  /* parser/parser.nit:9047 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9047);
+  }
+  /* parser/parser.nit:9048 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9059 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9060 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9060);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction183___action[] = "parser::ReduceAction183::(parser::ReduceAction::action)";
+void parser___ReduceAction183___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9065;
+  fra.me.meth = LOCATE_parser___ReduceAction183___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9071 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9072 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9073 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9074 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9075 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9076 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9077 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9079 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9079);
+  }
+  /* parser/parser.nit:9081 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9081);
+  }
+  /* parser/parser.nit:9083 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9083);
+  }
+  /* parser/parser.nit:9085 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9085);
+  }
+  /* parser/parser.nit:9087 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9087);
+  }
+  /* parser/parser.nit:9089 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9089);
+  }
+  /* parser/parser.nit:9091 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9091);
+  }
+  /* parser/parser.nit:9093 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9093);
+  }
+  /* parser/parser.nit:9094 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9105 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9106 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9106);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction184___action[] = "parser::ReduceAction184::(parser::ReduceAction::action)";
+void parser___ReduceAction184___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9111;
+  fra.me.meth = LOCATE_parser___ReduceAction184___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9113 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9114 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9115 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9116 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9117 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9118 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9119 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9120 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9121 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9122 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9123 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9124 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9126 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9126);
+  }
+  /* parser/parser.nit:9128 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9128);
+  }
+  /* parser/parser.nit:9130 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9130);
+  }
+  /* parser/parser.nit:9132 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9132);
+  }
+  /* parser/parser.nit:9134 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9134);
+  }
+  /* parser/parser.nit:9136 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9136);
+  }
+  /* parser/parser.nit:9138 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9138);
+  }
+  /* parser/parser.nit:9140 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9140);
+  }
+  /* parser/parser.nit:9142 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9142);
+  }
+  /* parser/parser.nit:9143 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9154 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9155 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9155);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction185___action[] = "parser::ReduceAction185::(parser::ReduceAction::action)";
+void parser___ReduceAction185___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9160;
+  fra.me.meth = LOCATE_parser___ReduceAction185___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9162 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9163 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9164 */
+  fra.me.REG[4] = 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:9166 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9167 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9168 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9170 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9170);
+  }
+  /* parser/parser.nit:9172 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9172);
+  }
+  /* parser/parser.nit:9174 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9174);
+  }
+  /* parser/parser.nit:9176 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9176);
+  }
+  /* parser/parser.nit:9178 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9178);
+  }
+  /* parser/parser.nit:9180 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9180);
+  }
+  /* parser/parser.nit:9181 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9192 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9193 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9193);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction186___action[] = "parser::ReduceAction186::(parser::ReduceAction::action)";
+void parser___ReduceAction186___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9198;
+  fra.me.meth = LOCATE_parser___ReduceAction186___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9200 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9201 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9202 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9203 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9204 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9205 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9206 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9207 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9209 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9209);
+  }
+  /* parser/parser.nit:9211 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9211);
+  }
+  /* parser/parser.nit:9213 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9213);
+  }
+  /* parser/parser.nit:9215 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9215);
+  }
+  /* parser/parser.nit:9217 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9217);
+  }
+  /* parser/parser.nit:9219 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9219);
+  }
+  /* parser/parser.nit:9221 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9221);
+  }
+  /* parser/parser.nit:9222 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9233 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9234 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9234);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction187___action[] = "parser::ReduceAction187::(parser::ReduceAction::action)";
+void parser___ReduceAction187___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9239;
+  fra.me.meth = LOCATE_parser___ReduceAction187___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9241 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9242 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9243 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9244 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9245 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9246 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9247 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9248 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9250 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9250);
+  }
+  /* parser/parser.nit:9252 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9252);
+  }
+  /* parser/parser.nit:9254 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9254);
+  }
+  /* parser/parser.nit:9256 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9256);
+  }
+  /* parser/parser.nit:9258 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9258);
+  }
+  /* parser/parser.nit:9260 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9260);
+  }
+  /* parser/parser.nit:9262 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9262);
+  }
+  /* parser/parser.nit:9263 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9274 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9275 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9275);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction188___action[] = "parser::ReduceAction188::(parser::ReduceAction::action)";
+void parser___ReduceAction188___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9280;
+  fra.me.meth = LOCATE_parser___ReduceAction188___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9282 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9283 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9284 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9285 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9286 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9287 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9288 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9289 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9290 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9292 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9292);
+  }
+  /* parser/parser.nit:9294 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9294);
+  }
+  /* parser/parser.nit:9296 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9296);
+  }
+  /* parser/parser.nit:9298 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9298);
+  }
+  /* parser/parser.nit:9300 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9300);
+  }
+  /* parser/parser.nit:9302 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9302);
+  }
+  /* parser/parser.nit:9304 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9304);
+  }
+  /* parser/parser.nit:9306 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9306);
+  }
+  /* parser/parser.nit:9307 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9318 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9319 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9319);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction189___action[] = "parser::ReduceAction189::(parser::ReduceAction::action)";
+void parser___ReduceAction189___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9324;
+  fra.me.meth = LOCATE_parser___ReduceAction189___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9326 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9327 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9328 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9329 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9330 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9332 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9332);
+  }
+  /* parser/parser.nit:9334 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9334);
+  }
+  /* parser/parser.nit:9336 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9336);
+  }
+  /* parser/parser.nit:9338 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9338);
+  }
+  /* parser/parser.nit:9339 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9352 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9353 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9353);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction190___action[] = "parser::ReduceAction190::(parser::ReduceAction::action)";
+void parser___ReduceAction190___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9358;
+  fra.me.meth = LOCATE_parser___ReduceAction190___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9360 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9361 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9362 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9363 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9364 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9365 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9367 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9367);
+  }
+  /* parser/parser.nit:9369 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9369);
+  }
+  /* parser/parser.nit:9371 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9371);
+  }
+  /* parser/parser.nit:9373 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9373);
+  }
+  /* parser/parser.nit:9375 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9375);
+  }
+  /* parser/parser.nit:9376 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9389 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9390 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9390);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction191___action[] = "parser::ReduceAction191::(parser::ReduceAction::action)";
+void parser___ReduceAction191___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9395;
+  fra.me.meth = LOCATE_parser___ReduceAction191___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9397 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9398 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9399 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9400 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9401 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9402 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9404 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9404);
+  }
+  /* parser/parser.nit:9406 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9406);
+  }
+  /* parser/parser.nit:9408 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9408);
+  }
+  /* parser/parser.nit:9410 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9410);
+  }
+  /* parser/parser.nit:9412 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9412);
+  }
+  /* parser/parser.nit:9413 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], fra.me.REG[6], NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9426 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9427 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9427);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction192___action[] = "parser::ReduceAction192::(parser::ReduceAction::action)";
+void parser___ReduceAction192___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9432;
+  fra.me.meth = LOCATE_parser___ReduceAction192___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9434 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9435 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9436 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9437 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9438 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9439 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9440 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9442 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9442);
+  }
+  /* parser/parser.nit:9444 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9444);
+  }
+  /* parser/parser.nit:9446 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9446);
+  }
+  /* parser/parser.nit:9448 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9448);
+  }
+  /* parser/parser.nit:9450 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9450);
+  }
+  /* parser/parser.nit:9452 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9452);
+  }
+  /* parser/parser.nit:9453 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9466 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9467 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9467);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction193___action[] = "parser::ReduceAction193::(parser::ReduceAction::action)";
+void parser___ReduceAction193___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9472;
+  fra.me.meth = LOCATE_parser___ReduceAction193___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9474 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9475 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9476 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9477 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9478 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9479 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9481 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9481);
+  }
+  /* parser/parser.nit:9483 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9483);
+  }
+  /* parser/parser.nit:9485 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9485);
+  }
+  /* parser/parser.nit:9487 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9487);
+  }
+  /* parser/parser.nit:9489 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9489);
+  }
+  /* parser/parser.nit:9490 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9503 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9504 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9504);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction194___action[] = "parser::ReduceAction194::(parser::ReduceAction::action)";
+void parser___ReduceAction194___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9509;
+  fra.me.meth = LOCATE_parser___ReduceAction194___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9511 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9512 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9513 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9514 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9515 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9516 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9517 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9519 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9519);
+  }
+  /* parser/parser.nit:9521 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9521);
+  }
+  /* parser/parser.nit:9523 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9523);
+  }
+  /* parser/parser.nit:9525 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9525);
+  }
+  /* parser/parser.nit:9527 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9527);
+  }
+  /* parser/parser.nit:9529 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9529);
+  }
+  /* parser/parser.nit:9530 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9543 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9544 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9544);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction195___action[] = "parser::ReduceAction195::(parser::ReduceAction::action)";
+void parser___ReduceAction195___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9549;
+  fra.me.meth = LOCATE_parser___ReduceAction195___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9551 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9552 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9553 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9554 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9555 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9556 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9557 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9559 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9559);
+  }
+  /* parser/parser.nit:9561 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9561);
+  }
+  /* parser/parser.nit:9563 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9563);
+  }
+  /* parser/parser.nit:9565 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9565);
+  }
+  /* parser/parser.nit:9567 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9567);
+  }
+  /* parser/parser.nit:9569 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9569);
+  }
+  /* parser/parser.nit:9570 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9583 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9584 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9584);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction196___action[] = "parser::ReduceAction196::(parser::ReduceAction::action)";
+void parser___ReduceAction196___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9589;
+  fra.me.meth = LOCATE_parser___ReduceAction196___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9591 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9592 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9593 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9594 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9595 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9596 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9597 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9598 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9600 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9600);
+  }
+  /* parser/parser.nit:9602 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9602);
+  }
+  /* parser/parser.nit:9604 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9604);
+  }
+  /* parser/parser.nit:9606 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9606);
+  }
+  /* parser/parser.nit:9608 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9608);
+  }
+  /* parser/parser.nit:9610 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9610);
+  }
+  /* parser/parser.nit:9612 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9612);
+  }
+  /* parser/parser.nit:9613 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9626 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9627 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9627);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction197___action[] = "parser::ReduceAction197::(parser::ReduceAction::action)";
+void parser___ReduceAction197___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9632;
+  fra.me.meth = LOCATE_parser___ReduceAction197___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9634 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9635 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9636 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9637 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9638 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9639 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9641 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9641);
+  }
+  /* parser/parser.nit:9643 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9643);
+  }
+  /* parser/parser.nit:9645 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9645);
+  }
+  /* parser/parser.nit:9647 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9647);
+  }
+  /* parser/parser.nit:9649 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9649);
+  }
+  /* parser/parser.nit:9650 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9663 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9664 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9664);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction198___action[] = "parser::ReduceAction198::(parser::ReduceAction::action)";
+void parser___ReduceAction198___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9669;
+  fra.me.meth = LOCATE_parser___ReduceAction198___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9671 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9672 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9673 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9674 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9675 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9676 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9677 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9679 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9679);
+  }
+  /* parser/parser.nit:9681 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9681);
+  }
+  /* parser/parser.nit:9683 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9683);
+  }
+  /* parser/parser.nit:9685 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9685);
+  }
+  /* parser/parser.nit:9687 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9687);
+  }
+  /* parser/parser.nit:9689 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9689);
+  }
+  /* parser/parser.nit:9690 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9703 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9704 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9704);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction199___action[] = "parser::ReduceAction199::(parser::ReduceAction::action)";
+void parser___ReduceAction199___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9709;
+  fra.me.meth = LOCATE_parser___ReduceAction199___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9711 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9712 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9713 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9714 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9715 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9716 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9717 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9719 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9719);
+  }
+  /* parser/parser.nit:9721 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9721);
+  }
+  /* parser/parser.nit:9723 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9723);
+  }
+  /* parser/parser.nit:9725 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9725);
+  }
+  /* parser/parser.nit:9727 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9727);
+  }
+  /* parser/parser.nit:9729 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9729);
+  }
+  /* parser/parser.nit:9730 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9743 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9744 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9744);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction200___action[] = "parser::ReduceAction200::(parser::ReduceAction::action)";
+void parser___ReduceAction200___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9749;
+  fra.me.meth = LOCATE_parser___ReduceAction200___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9751 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9752 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9753 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9754 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9755 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9756 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9757 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9758 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9760 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9760);
+  }
+  /* parser/parser.nit:9762 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9762);
+  }
+  /* parser/parser.nit:9764 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9764);
+  }
+  /* parser/parser.nit:9766 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9766);
+  }
+  /* parser/parser.nit:9768 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9768);
+  }
+  /* parser/parser.nit:9770 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9770);
+  }
+  /* parser/parser.nit:9772 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9772);
+  }
+  /* parser/parser.nit:9773 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9786 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9787 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9787);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction201___action[] = "parser::ReduceAction201::(parser::ReduceAction::action)";
+void parser___ReduceAction201___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9792;
+  fra.me.meth = LOCATE_parser___ReduceAction201___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9794 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9795 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9796 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9797 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9798 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9799 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9800 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9802 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9802);
+  }
+  /* parser/parser.nit:9804 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9804);
+  }
+  /* parser/parser.nit:9806 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9806);
+  }
+  /* parser/parser.nit:9808 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9808);
+  }
+  /* parser/parser.nit:9810 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9810);
+  }
+  /* parser/parser.nit:9812 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9812);
+  }
+  /* parser/parser.nit:9813 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9826 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9827 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9827);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction202___action[] = "parser::ReduceAction202::(parser::ReduceAction::action)";
+void parser___ReduceAction202___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9832;
+  fra.me.meth = LOCATE_parser___ReduceAction202___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9834 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9835 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9836 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9837 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9838 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9839 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9840 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9841 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9843 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9843);
+  }
+  /* parser/parser.nit:9845 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9845);
+  }
+  /* parser/parser.nit:9847 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9847);
+  }
+  /* parser/parser.nit:9849 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9849);
+  }
+  /* parser/parser.nit:9851 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9851);
+  }
+  /* parser/parser.nit:9853 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9853);
+  }
+  /* parser/parser.nit:9855 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9855);
+  }
+  /* parser/parser.nit:9856 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9869 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9870 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9870);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction203___action[] = "parser::ReduceAction203::(parser::ReduceAction::action)";
+void parser___ReduceAction203___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9875;
+  fra.me.meth = LOCATE_parser___ReduceAction203___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9877 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9878 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9879 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9880 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9881 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9882 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9883 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9884 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9886 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9886);
+  }
+  /* parser/parser.nit:9888 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9888);
+  }
+  /* parser/parser.nit:9890 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9890);
+  }
+  /* parser/parser.nit:9892 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9892);
+  }
+  /* parser/parser.nit:9894 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9894);
+  }
+  /* parser/parser.nit:9896 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9896);
+  }
+  /* parser/parser.nit:9898 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9898);
+  }
+  /* parser/parser.nit:9899 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9912 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9913 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9913);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction204___action[] = "parser::ReduceAction204::(parser::ReduceAction::action)";
+void parser___ReduceAction204___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 9918;
+  fra.me.meth = LOCATE_parser___ReduceAction204___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9920 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9921 */
+  fra.me.REG[3] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9924 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9925 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9926 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9927 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9928 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9930 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9930);
+  }
+  /* parser/parser.nit:9932 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9932);
+  }
+  /* parser/parser.nit:9934 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9934);
+  }
+  /* parser/parser.nit:9936 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9936);
+  }
+  /* parser/parser.nit:9938 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9938);
+  }
+  /* parser/parser.nit:9940 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9940);
+  }
+  /* parser/parser.nit:9942 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9942);
+  }
+  /* parser/parser.nit:9944 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9944);
+  }
+  /* parser/parser.nit:9945 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9958 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9959 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9959);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction205___action[] = "parser::ReduceAction205::(parser::ReduceAction::action)";
+void parser___ReduceAction205___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9964;
+  fra.me.meth = LOCATE_parser___ReduceAction205___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9966 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9967 */
+  fra.me.REG[3] = 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:9970 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9971 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9972 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9973 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9975 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9975);
+  }
+  /* parser/parser.nit:9977 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9977);
+  }
+  /* parser/parser.nit:9979 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9979);
+  }
+  /* parser/parser.nit:9981 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9981);
+  }
+  /* parser/parser.nit:9983 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9983);
+  }
+  /* parser/parser.nit:9984 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9997 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9998 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9998);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction206___action[] = "parser::ReduceAction206::(parser::ReduceAction::action)";
+void parser___ReduceAction206___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10003;
+  fra.me.meth = LOCATE_parser___ReduceAction206___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10005 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10006 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10007 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10008 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10009 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10010 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10011 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10012 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10013 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10015 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10015);
+  }
+  /* parser/parser.nit:10017 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10017);
+  }
+  /* parser/parser.nit:10019 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10019);
+  }
+  /* parser/parser.nit:10021 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10021);
+  }
+  /* parser/parser.nit:10023 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10023);
+  }
+  /* parser/parser.nit:10025 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10025);
+  }
+  /* parser/parser.nit:10026 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10039 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10040 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10040);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction207___action[] = "parser::ReduceAction207::(parser::ReduceAction::action)";
+void parser___ReduceAction207___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10045;
+  fra.me.meth = LOCATE_parser___ReduceAction207___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10047 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10048 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10049 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10050 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10051 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10052 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10053 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10054 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10055 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10057 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10057);
+  }
+  /* parser/parser.nit:10059 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10059);
+  }
+  /* parser/parser.nit:10061 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10061);
+  }
+  /* parser/parser.nit:10063 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10063);
+  }
+  /* parser/parser.nit:10065 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10065);
+  }
+  /* parser/parser.nit:10067 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10067);
+  }
+  /* parser/parser.nit:10068 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10081 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10082 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10082);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction208___action[] = "parser::ReduceAction208::(parser::ReduceAction::action)";
+void parser___ReduceAction208___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10087;
+  fra.me.meth = LOCATE_parser___ReduceAction208___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10089 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10090 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10091 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10092 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10093 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10094 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10095 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10096 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10097 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10098 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10100 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10100);
+  }
+  /* parser/parser.nit:10102 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10102);
+  }
+  /* parser/parser.nit:10104 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10104);
+  }
+  /* parser/parser.nit:10106 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10106);
+  }
+  /* parser/parser.nit:10108 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10108);
+  }
+  /* parser/parser.nit:10110 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10110);
+  }
+  /* parser/parser.nit:10112 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10112);
+  }
+  /* parser/parser.nit:10113 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10126 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10127 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10127);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction209___action[] = "parser::ReduceAction209::(parser::ReduceAction::action)";
+void parser___ReduceAction209___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10132;
+  fra.me.meth = LOCATE_parser___ReduceAction209___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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:10137 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10138 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10139 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10140 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10141 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10142 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10144 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10144);
+  }
+  /* parser/parser.nit:10146 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10146);
+  }
+  /* parser/parser.nit:10148 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10148);
+  }
+  /* parser/parser.nit:10150 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10150);
+  }
+  /* parser/parser.nit:10152 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10152);
+  }
+  /* parser/parser.nit:10154 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10154);
+  }
+  /* parser/parser.nit:10155 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10168 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10169 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10169);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction210___action[] = "parser::ReduceAction210::(parser::ReduceAction::action)";
+void parser___ReduceAction210___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10174;
+  fra.me.meth = LOCATE_parser___ReduceAction210___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10176 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10177 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10178 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10179 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10180 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10181 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10182 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10183 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10184 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10185 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10187 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10187);
+  }
+  /* parser/parser.nit:10189 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10189);
+  }
+  /* parser/parser.nit:10191 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10191);
+  }
+  /* parser/parser.nit:10193 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10193);
+  }
+  /* parser/parser.nit:10195 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10195);
+  }
+  /* parser/parser.nit:10197 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10197);
+  }
+  /* parser/parser.nit:10199 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10199);
+  }
+  /* parser/parser.nit:10200 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10213 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10214 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10214);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction211___action[] = "parser::ReduceAction211::(parser::ReduceAction::action)";
+void parser___ReduceAction211___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10219;
+  fra.me.meth = LOCATE_parser___ReduceAction211___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10221 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10222 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10223 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10224 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10225 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10226 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10227 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10228 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10229 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10230 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10232 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10232);
+  }
+  /* parser/parser.nit:10234 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10234);
+  }
+  /* parser/parser.nit:10236 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10236);
+  }
+  /* parser/parser.nit:10238 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10238);
+  }
+  /* parser/parser.nit:10240 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10240);
+  }
+  /* parser/parser.nit:10242 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10242);
+  }
+  /* parser/parser.nit:10244 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10244);
+  }
+  /* parser/parser.nit:10245 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10258 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10259 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10259);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction212___action[] = "parser::ReduceAction212::(parser::ReduceAction::action)";
+void parser___ReduceAction212___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10264;
+  fra.me.meth = LOCATE_parser___ReduceAction212___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10266 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10267 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10268 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10269 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10270 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10271 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10272 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10273 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10274 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10275 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10276 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10278 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10278);
+  }
+  /* parser/parser.nit:10280 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10280);
+  }
+  /* parser/parser.nit:10282 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10282);
+  }
+  /* parser/parser.nit:10284 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10284);
+  }
+  /* parser/parser.nit:10286 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10286);
+  }
+  /* parser/parser.nit:10288 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10288);
+  }
+  /* parser/parser.nit:10290 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10290);
+  }
+  /* parser/parser.nit:10292 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10292);
+  }
+  /* parser/parser.nit:10293 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, 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___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10307);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction213___action[] = "parser::ReduceAction213::(parser::ReduceAction::action)";
+void parser___ReduceAction213___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10312;
+  fra.me.meth = LOCATE_parser___ReduceAction213___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10314 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10315 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10316 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10317 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10318 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10319 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10320 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10321 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10322 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10324 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10324);
+  }
+  /* parser/parser.nit:10326 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10326);
+  }
+  /* parser/parser.nit:10328 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10328);
+  }
+  /* parser/parser.nit:10330 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10330);
+  }
+  /* parser/parser.nit:10332 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10332);
+  }
+  /* parser/parser.nit:10334 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10334);
+  }
+  /* parser/parser.nit:10335 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10348 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10349 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10349);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction214___action[] = "parser::ReduceAction214::(parser::ReduceAction::action)";
+void parser___ReduceAction214___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10354;
+  fra.me.meth = LOCATE_parser___ReduceAction214___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10356 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10357 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10358 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10359 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10360 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10361 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10362 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10363 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10364 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10365 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10367 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10367);
+  }
+  /* parser/parser.nit:10369 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10369);
+  }
+  /* parser/parser.nit:10371 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10371);
+  }
+  /* parser/parser.nit:10373 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10373);
+  }
+  /* parser/parser.nit:10375 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10375);
+  }
+  /* parser/parser.nit:10377 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10377);
+  }
+  /* parser/parser.nit:10379 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10379);
+  }
+  /* parser/parser.nit:10380 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, 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___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10394);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction215___action[] = "parser::ReduceAction215::(parser::ReduceAction::action)";
+void parser___ReduceAction215___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10399;
+  fra.me.meth = LOCATE_parser___ReduceAction215___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10401 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10402 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10403 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10404 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10405 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10406 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10407 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10408 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10409 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10410 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10412 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10412);
+  }
+  /* parser/parser.nit:10414 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10414);
+  }
+  /* parser/parser.nit:10416 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10416);
+  }
+  /* parser/parser.nit:10418 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10418);
+  }
+  /* parser/parser.nit:10420 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10420);
+  }
+  /* parser/parser.nit:10422 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10422);
+  }
+  /* parser/parser.nit:10424 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10424);
+  }
+  /* parser/parser.nit:10425 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10438 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10439 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10439);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction216___action[] = "parser::ReduceAction216::(parser::ReduceAction::action)";
+void parser___ReduceAction216___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10444;
+  fra.me.meth = LOCATE_parser___ReduceAction216___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10446 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10447 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10448 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10449 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10450 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10451 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10452 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10453 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10454 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10455 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10456 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10458 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10458);
+  }
+  /* parser/parser.nit:10460 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10460);
+  }
+  /* parser/parser.nit:10462 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10462);
+  }
+  /* parser/parser.nit:10464 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10464);
+  }
+  /* parser/parser.nit:10466 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10466);
+  }
+  /* parser/parser.nit:10468 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10468);
+  }
+  /* parser/parser.nit:10470 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10470);
+  }
+  /* parser/parser.nit:10472 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10472);
+  }
+  /* parser/parser.nit:10473 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10486 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10487 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10487);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction217___action[] = "parser::ReduceAction217::(parser::ReduceAction::action)";
+void parser___ReduceAction217___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10492;
+  fra.me.meth = LOCATE_parser___ReduceAction217___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10494 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10495 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10496 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10497 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10498 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10499 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10500 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10501 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10502 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10503 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10505 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10505);
+  }
+  /* parser/parser.nit:10507 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10507);
+  }
+  /* parser/parser.nit:10509 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10509);
+  }
+  /* parser/parser.nit:10511 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10511);
+  }
+  /* parser/parser.nit:10513 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10513);
+  }
+  /* parser/parser.nit:10515 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10515);
+  }
+  /* parser/parser.nit:10517 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10517);
+  }
+  /* parser/parser.nit:10518 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10531 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10532 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10532);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction218___action[] = "parser::ReduceAction218::(parser::ReduceAction::action)";
+void parser___ReduceAction218___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10537;
+  fra.me.meth = LOCATE_parser___ReduceAction218___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10539 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10540 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10541 */
+  fra.me.REG[4] = 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10544 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10545 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10546 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10547 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10548 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10549 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10551 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10551);
+  }
+  /* parser/parser.nit:10553 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10553);
+  }
+  /* parser/parser.nit:10555 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10555);
+  }
+  /* parser/parser.nit:10557 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10557);
+  }
+  /* parser/parser.nit:10559 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10559);
+  }
+  /* parser/parser.nit:10561 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10561);
+  }
+  /* parser/parser.nit:10563 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10563);
+  }
+  /* parser/parser.nit:10565 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10565);
+  }
+  /* parser/parser.nit:10566 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10579 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10580 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10580);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction219___action[] = "parser::ReduceAction219::(parser::ReduceAction::action)";
+void parser___ReduceAction219___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10585;
+  fra.me.meth = LOCATE_parser___ReduceAction219___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10587 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10588 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10589 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10590 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10591 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10592 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10593 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10594 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10595 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10596 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10597 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10599 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10599);
+  }
+  /* parser/parser.nit:10601 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10601);
+  }
+  /* parser/parser.nit:10603 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10603);
+  }
+  /* parser/parser.nit:10605 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10605);
+  }
+  /* parser/parser.nit:10607 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10607);
+  }
+  /* parser/parser.nit:10609 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10609);
+  }
+  /* parser/parser.nit:10611 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10611);
+  }
+  /* parser/parser.nit:10613 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10613);
+  }
+  /* parser/parser.nit:10614 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10627 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10628 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10628);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction220___action[] = "parser::ReduceAction220::(parser::ReduceAction::action)";
+void parser___ReduceAction220___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10633;
+  fra.me.meth = LOCATE_parser___ReduceAction220___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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:10637 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10638 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10639 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10640 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10641 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10642 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10643 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10644 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10645 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10646 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10648 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10648);
+  }
+  /* parser/parser.nit:10650 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10650);
+  }
+  /* parser/parser.nit:10652 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10652);
+  }
+  /* parser/parser.nit:10654 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10654);
+  }
+  /* parser/parser.nit:10656 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10656);
+  }
+  /* parser/parser.nit:10658 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10658);
+  }
+  /* parser/parser.nit:10660 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10660);
+  }
+  /* parser/parser.nit:10662 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10662);
+  }
+  /* parser/parser.nit:10664 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10664);
+  }
+  /* parser/parser.nit:10665 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10678 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10679 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10679);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction221___action[] = "parser::ReduceAction221::(parser::ReduceAction::action)";
+void parser___ReduceAction221___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10684;
+  fra.me.meth = LOCATE_parser___ReduceAction221___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10686 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10687 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10688 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10689 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10690 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10692 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10692);
+  }
+  /* parser/parser.nit:10694 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10694);
+  }
+  /* parser/parser.nit:10696 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10696);
+  }
+  /* parser/parser.nit:10698 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10698);
+  }
+  /* parser/parser.nit:10699 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10712 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10713 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10713);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction222___action[] = "parser::ReduceAction222::(parser::ReduceAction::action)";
+void parser___ReduceAction222___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10718;
+  fra.me.meth = LOCATE_parser___ReduceAction222___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10720 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10721 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10722 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10723 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10724 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10725 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10727 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10727);
+  }
+  /* parser/parser.nit:10729 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10729);
+  }
+  /* parser/parser.nit:10731 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10731);
+  }
+  /* parser/parser.nit:10733 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10733);
+  }
+  /* parser/parser.nit:10735 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10735);
+  }
+  /* parser/parser.nit:10736 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10749 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10750 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10750);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction223___action[] = "parser::ReduceAction223::(parser::ReduceAction::action)";
+void parser___ReduceAction223___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10755;
+  fra.me.meth = LOCATE_parser___ReduceAction223___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10757 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10758 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10759 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10760 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10761 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10762 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10764 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10764);
+  }
+  /* parser/parser.nit:10766 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10766);
+  }
+  /* parser/parser.nit:10768 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10768);
+  }
+  /* parser/parser.nit:10770 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10770);
+  }
+  /* parser/parser.nit:10772 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10772);
+  }
+  /* parser/parser.nit:10773 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10786 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10787 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10787);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction224___action[] = "parser::ReduceAction224::(parser::ReduceAction::action)";
+void parser___ReduceAction224___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10792;
+  fra.me.meth = LOCATE_parser___ReduceAction224___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10797 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10798 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10799 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10800 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10802 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10802);
+  }
+  /* parser/parser.nit:10804 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10804);
+  }
+  /* parser/parser.nit:10806 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10806);
+  }
+  /* parser/parser.nit:10808 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10808);
+  }
+  /* parser/parser.nit:10810 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10810);
+  }
+  /* parser/parser.nit:10812 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10812);
+  }
+  /* parser/parser.nit:10813 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10826 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10827 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10827);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction225___action[] = "parser::ReduceAction225::(parser::ReduceAction::action)";
+void parser___ReduceAction225___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10832;
+  fra.me.meth = LOCATE_parser___ReduceAction225___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10834 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10835 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10836 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10837 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10838 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10839 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10841 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10841);
+  }
+  /* parser/parser.nit:10843 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10843);
+  }
+  /* parser/parser.nit:10845 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10845);
+  }
+  /* parser/parser.nit:10847 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10847);
+  }
+  /* parser/parser.nit:10849 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10849);
+  }
+  /* parser/parser.nit:10850 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10863 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:10864 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10864);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction226___action[] = "parser::ReduceAction226::(parser::ReduceAction::action)";
+void parser___ReduceAction226___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10869;
+  fra.me.meth = LOCATE_parser___ReduceAction226___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10871 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10872 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10873 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10874 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10875 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10876 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10877 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10879 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10879);
+  }
+  /* parser/parser.nit:10881 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10881);
+  }
+  /* parser/parser.nit:10883 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10883);
+  }
+  /* parser/parser.nit:10885 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10885);
+  }
+  /* parser/parser.nit:10887 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10887);
+  }
+  /* parser/parser.nit:10889 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10889);
+  }
+  /* parser/parser.nit:10890 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10903 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:10904 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10904);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction227___action[] = "parser::ReduceAction227::(parser::ReduceAction::action)";
+void parser___ReduceAction227___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10909;
+  fra.me.meth = LOCATE_parser___ReduceAction227___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10911 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10912 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10913 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10914 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10915 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10916 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10917 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10919 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10919);
+  }
+  /* parser/parser.nit:10921 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10921);
+  }
+  /* parser/parser.nit:10923 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10923);
+  }
+  /* parser/parser.nit:10925 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10925);
+  }
+  /* parser/parser.nit:10927 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10927);
+  }
+  /* parser/parser.nit:10929 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10929);
+  }
+  /* parser/parser.nit:10930 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10943 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:10944 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10944);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction228___action[] = "parser::ReduceAction228::(parser::ReduceAction::action)";
+void parser___ReduceAction228___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10949;
+  fra.me.meth = LOCATE_parser___ReduceAction228___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10951 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10952 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10953 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10954 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10955 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10956 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10957 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10958 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10960 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10960);
+  }
+  /* parser/parser.nit:10962 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10962);
+  }
+  /* parser/parser.nit:10964 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10964);
+  }
+  /* parser/parser.nit:10966 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10966);
+  }
+  /* parser/parser.nit:10968 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10968);
+  }
+  /* parser/parser.nit:10970 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10970);
+  }
+  /* parser/parser.nit:10972 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10972);
+  }
+  /* parser/parser.nit:10973 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[3], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:10986 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:10987 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10987);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction229___action[] = "parser::ReduceAction229::(parser::ReduceAction::action)";
+void parser___ReduceAction229___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 10992;
+  fra.me.meth = LOCATE_parser___ReduceAction229___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10994 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10995 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10996 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10997 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10998 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10999 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11001 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11001);
+  }
+  /* parser/parser.nit:11003 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11003);
+  }
+  /* parser/parser.nit:11005 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11005);
+  }
+  /* parser/parser.nit:11007 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11007);
+  }
+  /* parser/parser.nit:11009 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11009);
+  }
+  /* parser/parser.nit:11010 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11023 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11024 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11024);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction230___action[] = "parser::ReduceAction230::(parser::ReduceAction::action)";
+void parser___ReduceAction230___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11029;
+  fra.me.meth = LOCATE_parser___ReduceAction230___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11031 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11032 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11033 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11034 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11035 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11036 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11037 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11039 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11039);
+  }
+  /* parser/parser.nit:11041 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11041);
+  }
+  /* parser/parser.nit:11043 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11043);
+  }
+  /* parser/parser.nit:11045 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11045);
+  }
+  /* parser/parser.nit:11047 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11047);
+  }
+  /* parser/parser.nit:11049 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11049);
+  }
+  /* parser/parser.nit:11050 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11063 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11064 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11064);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction231___action[] = "parser::ReduceAction231::(parser::ReduceAction::action)";
+void parser___ReduceAction231___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11069;
+  fra.me.meth = LOCATE_parser___ReduceAction231___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11071 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11072 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11073 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11074 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11075 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11076 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11077 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11079 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11079);
+  }
+  /* parser/parser.nit:11081 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11081);
+  }
+  /* parser/parser.nit:11083 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11083);
+  }
+  /* parser/parser.nit:11085 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11085);
+  }
+  /* parser/parser.nit:11087 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11087);
+  }
+  /* parser/parser.nit:11089 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11089);
+  }
+  /* parser/parser.nit:11090 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11103 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11104 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11104);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction232___action[] = "parser::ReduceAction232::(parser::ReduceAction::action)";
+void parser___ReduceAction232___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11109;
+  fra.me.meth = LOCATE_parser___ReduceAction232___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11111 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11112 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11113 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11114 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11115 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11116 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11117 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11118 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11120 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11120);
+  }
+  /* parser/parser.nit:11122 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11122);
+  }
+  /* parser/parser.nit:11124 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11124);
+  }
+  /* parser/parser.nit:11126 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11126);
+  }
+  /* parser/parser.nit:11128 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11128);
+  }
+  /* parser/parser.nit:11130 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11130);
+  }
+  /* parser/parser.nit:11132 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11132);
+  }
+  /* parser/parser.nit:11133 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11146 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11147 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11147);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction233___action[] = "parser::ReduceAction233::(parser::ReduceAction::action)";
+void parser___ReduceAction233___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11152;
+  fra.me.meth = LOCATE_parser___ReduceAction233___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11154 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11155 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11156 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11157 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11158 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11159 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11160 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11162 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11162);
+  }
+  /* parser/parser.nit:11164 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11164);
+  }
+  /* parser/parser.nit:11166 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11166);
+  }
+  /* parser/parser.nit:11168 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11168);
+  }
+  /* parser/parser.nit:11170 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11170);
+  }
+  /* parser/parser.nit:11172 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11172);
+  }
+  /* parser/parser.nit:11173 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11186 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11187 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11187);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction234___action[] = "parser::ReduceAction234::(parser::ReduceAction::action)";
+void parser___ReduceAction234___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11192;
+  fra.me.meth = LOCATE_parser___ReduceAction234___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit: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] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11197 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11198 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11199 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11200 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11201 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11203 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11203);
+  }
+  /* parser/parser.nit:11205 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11205);
+  }
+  /* parser/parser.nit:11207 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11207);
+  }
+  /* parser/parser.nit:11209 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11209);
+  }
+  /* parser/parser.nit:11211 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11211);
+  }
+  /* parser/parser.nit:11213 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11213);
+  }
+  /* parser/parser.nit:11215 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11215);
+  }
+  /* parser/parser.nit:11216 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11229 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11230 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11230);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction235___action[] = "parser::ReduceAction235::(parser::ReduceAction::action)";
+void parser___ReduceAction235___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11235;
+  fra.me.meth = LOCATE_parser___ReduceAction235___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11237 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11238 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11239 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11240 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11241 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11242 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11243 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11244 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11246 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11246);
+  }
+  /* parser/parser.nit:11248 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11248);
+  }
+  /* parser/parser.nit:11250 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11250);
+  }
+  /* parser/parser.nit:11252 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11252);
+  }
+  /* parser/parser.nit:11254 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11254);
+  }
+  /* parser/parser.nit:11256 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11256);
+  }
+  /* parser/parser.nit:11258 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11258);
+  }
+  /* parser/parser.nit:11259 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11272 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11273 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11273);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction236___action[] = "parser::ReduceAction236::(parser::ReduceAction::action)";
+void parser___ReduceAction236___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11278;
+  fra.me.meth = LOCATE_parser___ReduceAction236___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11280 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11281 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11282 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11283 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11284 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11285 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11286 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11287 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11288 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11290 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11290);
+  }
+  /* parser/parser.nit:11292 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11292);
+  }
+  /* parser/parser.nit:11294 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11294);
+  }
+  /* parser/parser.nit:11296 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11296);
+  }
+  /* parser/parser.nit:11298 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11298);
+  }
+  /* parser/parser.nit:11300 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11300);
+  }
+  /* parser/parser.nit:11302 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11302);
+  }
+  /* parser/parser.nit:11304 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11304);
+  }
+  /* parser/parser.nit:11305 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11318 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11319 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11319);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction237___action[] = "parser::ReduceAction237::(parser::ReduceAction::action)";
+void parser___ReduceAction237___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11324;
+  fra.me.meth = LOCATE_parser___ReduceAction237___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11326 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11327 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11328 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11329 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11330 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11331 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11332 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11333 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11335 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11335);
+  }
+  /* parser/parser.nit:11337 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11337);
+  }
+  /* parser/parser.nit:11339 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11339);
+  }
+  /* parser/parser.nit:11341 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11341);
+  }
+  /* parser/parser.nit:11343 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11343);
+  }
+  /* parser/parser.nit:11344 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11357 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11358 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11358);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction238___action[] = "parser::ReduceAction238::(parser::ReduceAction::action)";
+void parser___ReduceAction238___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11363;
+  fra.me.meth = LOCATE_parser___ReduceAction238___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11365 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11366 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11367 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11368 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11369 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11370 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11371 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11372 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11373 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11375 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11375);
+  }
+  /* parser/parser.nit:11377 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11377);
+  }
+  /* parser/parser.nit:11379 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11379);
+  }
+  /* parser/parser.nit:11381 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11381);
+  }
+  /* parser/parser.nit:11383 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11383);
+  }
+  /* parser/parser.nit:11385 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11385);
+  }
+  /* parser/parser.nit:11386 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11399 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11400 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11400);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction239___action[] = "parser::ReduceAction239::(parser::ReduceAction::action)";
+void parser___ReduceAction239___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11405;
+  fra.me.meth = LOCATE_parser___ReduceAction239___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11407 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11408 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11409 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11410 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11411 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11412 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11413 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11414 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11415 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11417 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11417);
+  }
+  /* parser/parser.nit:11419 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11419);
+  }
+  /* parser/parser.nit:11421 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11421);
+  }
+  /* parser/parser.nit:11423 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11423);
+  }
+  /* parser/parser.nit:11425 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11425);
+  }
+  /* parser/parser.nit:11427 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11427);
+  }
+  /* parser/parser.nit:11428 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11441 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11442 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11442);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction240___action[] = "parser::ReduceAction240::(parser::ReduceAction::action)";
+void parser___ReduceAction240___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11447;
+  fra.me.meth = LOCATE_parser___ReduceAction240___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11449 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11450 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11451 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11452 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11453 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11454 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11455 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11456 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11457 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11458 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11460 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11460);
+  }
+  /* parser/parser.nit:11462 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11462);
+  }
+  /* parser/parser.nit:11464 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11464);
+  }
+  /* parser/parser.nit:11466 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11466);
+  }
+  /* parser/parser.nit:11468 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11468);
+  }
+  /* parser/parser.nit:11470 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11470);
+  }
+  /* parser/parser.nit:11472 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11472);
+  }
+  /* parser/parser.nit:11473 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11486 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11487 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11487);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction241___action[] = "parser::ReduceAction241::(parser::ReduceAction::action)";
+void parser___ReduceAction241___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11492;
+  fra.me.meth = LOCATE_parser___ReduceAction241___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11494 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11495 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11496 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11497 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11498 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11499 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11500 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11501 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11502 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11504 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11504);
+  }
+  /* parser/parser.nit:11506 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11506);
+  }
+  /* parser/parser.nit:11508 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11508);
+  }
+  /* parser/parser.nit:11510 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11510);
+  }
+  /* parser/parser.nit:11512 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11512);
+  }
+  /* parser/parser.nit:11514 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11514);
+  }
+  /* parser/parser.nit:11515 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11528 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11529 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11529);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction242___action[] = "parser::ReduceAction242::(parser::ReduceAction::action)";
+void parser___ReduceAction242___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11534;
+  fra.me.meth = LOCATE_parser___ReduceAction242___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11536 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11537 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11538 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11539 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11540 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11541 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11542 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11543 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11544 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11545 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11547 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11547);
+  }
+  /* parser/parser.nit:11549 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11549);
+  }
+  /* parser/parser.nit:11551 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11551);
+  }
+  /* parser/parser.nit:11553 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11553);
+  }
+  /* parser/parser.nit:11555 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11555);
+  }
+  /* parser/parser.nit:11557 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11557);
+  }
+  /* parser/parser.nit:11559 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11559);
+  }
+  /* parser/parser.nit:11560 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11573 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11574 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11574);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction243___action[] = "parser::ReduceAction243::(parser::ReduceAction::action)";
+void parser___ReduceAction243___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11579;
+  fra.me.meth = LOCATE_parser___ReduceAction243___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11581 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11582 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11583 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11584 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11585 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11586 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11587 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11588 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11589 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11590 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11592 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11592);
+  }
+  /* parser/parser.nit:11594 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11594);
+  }
+  /* parser/parser.nit:11596 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11596);
+  }
+  /* parser/parser.nit:11598 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11598);
+  }
+  /* parser/parser.nit:11600 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11600);
+  }
+  /* parser/parser.nit:11602 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11602);
+  }
+  /* parser/parser.nit:11604 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11604);
+  }
+  /* parser/parser.nit:11605 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11618 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11619 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11619);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction244___action[] = "parser::ReduceAction244::(parser::ReduceAction::action)";
+void parser___ReduceAction244___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11624;
+  fra.me.meth = LOCATE_parser___ReduceAction244___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11626 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11627 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11628 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11629 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11630 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11631 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11632 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11633 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11634 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11635 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11636 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11638 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11638);
+  }
+  /* parser/parser.nit:11640 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11640);
+  }
+  /* parser/parser.nit:11642 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11642);
+  }
+  /* parser/parser.nit:11644 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11644);
+  }
+  /* parser/parser.nit:11646 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11646);
+  }
+  /* parser/parser.nit:11648 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11648);
+  }
+  /* parser/parser.nit:11650 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11650);
+  }
+  /* parser/parser.nit:11652 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11652);
+  }
+  /* parser/parser.nit:11653 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:11666 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11667 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11667);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction245___action[] = "parser::ReduceAction245::(parser::ReduceAction::action)";
+void parser___ReduceAction245___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11672;
+  fra.me.meth = LOCATE_parser___ReduceAction245___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11674 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11675 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11676 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11677 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11678 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11679 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11680 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11681 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11682 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11684 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11684);
+  }
+  /* parser/parser.nit:11686 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11686);
+  }
+  /* parser/parser.nit:11688 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11688);
+  }
+  /* parser/parser.nit:11690 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11690);
+  }
+  /* parser/parser.nit:11692 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11692);
+  }
+  /* parser/parser.nit:11694 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11694);
+  }
+  /* parser/parser.nit:11695 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:11708 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11709 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11709);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction246___action[] = "parser::ReduceAction246::(parser::ReduceAction::action)";
+void parser___ReduceAction246___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11714;
+  fra.me.meth = LOCATE_parser___ReduceAction246___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11716 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11717 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11718 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11719 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11720 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11721 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11722 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11723 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11724 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11725 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11727 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11727);
+  }
+  /* parser/parser.nit:11729 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11729);
+  }
+  /* parser/parser.nit:11731 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11731);
+  }
+  /* parser/parser.nit:11733 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11733);
+  }
+  /* parser/parser.nit:11735 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11735);
+  }
+  /* parser/parser.nit:11737 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11737);
+  }
+  /* parser/parser.nit:11739 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11739);
+  }
+  /* parser/parser.nit:11740 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:11753 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11754 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11754);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction247___action[] = "parser::ReduceAction247::(parser::ReduceAction::action)";
+void parser___ReduceAction247___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11759;
+  fra.me.meth = LOCATE_parser___ReduceAction247___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11761 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11762 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11763 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11764 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11765 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11766 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11767 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11768 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11769 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11770 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11772 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11772);
+  }
+  /* parser/parser.nit:11774 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11774);
+  }
+  /* parser/parser.nit:11776 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11776);
+  }
+  /* parser/parser.nit:11778 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11778);
+  }
+  /* parser/parser.nit:11780 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11780);
+  }
+  /* parser/parser.nit:11782 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11782);
+  }
+  /* parser/parser.nit:11784 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11784);
+  }
+  /* parser/parser.nit:11785 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:11798 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11799 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11799);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction248___action[] = "parser::ReduceAction248::(parser::ReduceAction::action)";
+void parser___ReduceAction248___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11804;
+  fra.me.meth = LOCATE_parser___ReduceAction248___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11806 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11807 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11808 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11809 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11810 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11811 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11812 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11813 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11814 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11815 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11816 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11818 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11818);
+  }
+  /* parser/parser.nit:11820 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11820);
+  }
+  /* parser/parser.nit:11822 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11822);
+  }
+  /* parser/parser.nit:11824 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11824);
+  }
+  /* parser/parser.nit:11826 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11826);
+  }
+  /* parser/parser.nit:11828 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11828);
+  }
+  /* parser/parser.nit:11830 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11830);
+  }
+  /* parser/parser.nit:11832 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11832);
+  }
+  /* parser/parser.nit:11833 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, NIT_NULL, 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], fra.me.REG[4]);
+  /* parser/parser.nit:11846 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11847 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11847);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction249___action[] = "parser::ReduceAction249::(parser::ReduceAction::action)";
+void parser___ReduceAction249___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11852;
+  fra.me.meth = LOCATE_parser___ReduceAction249___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11854 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11855 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11856 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11857 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11858 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11859 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11860 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11861 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11862 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11863 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11865 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11865);
+  }
+  /* parser/parser.nit:11867 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11867);
+  }
+  /* parser/parser.nit:11869 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11869);
+  }
+  /* parser/parser.nit:11871 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11871);
+  }
+  /* parser/parser.nit:11873 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11873);
+  }
+  /* parser/parser.nit:11875 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11875);
+  }
+  /* parser/parser.nit:11877 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11877);
+  }
+  /* parser/parser.nit:11878 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:11891 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11892 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11892);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction250___action[] = "parser::ReduceAction250::(parser::ReduceAction::action)";
+void parser___ReduceAction250___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11897;
+  fra.me.meth = LOCATE_parser___ReduceAction250___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11899 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11900 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11901 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11902 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11903 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11904 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11905 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11906 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11907 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11908 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11909 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11911 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11911);
+  }
+  /* parser/parser.nit:11913 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11913);
+  }
+  /* parser/parser.nit:11915 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11915);
+  }
+  /* parser/parser.nit:11917 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11917);
+  }
+  /* parser/parser.nit:11919 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11919);
+  }
+  /* parser/parser.nit:11921 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11921);
+  }
+  /* parser/parser.nit:11923 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11923);
+  }
+  /* parser/parser.nit:11925 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11925);
+  }
+  /* parser/parser.nit:11926 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[5], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:11939 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11940 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11940);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction251___action[] = "parser::ReduceAction251::(parser::ReduceAction::action)";
+void parser___ReduceAction251___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11945;
+  fra.me.meth = LOCATE_parser___ReduceAction251___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11947 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11948 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11949 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11950 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11951 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11952 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11953 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11954 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11955 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11956 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11957 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11959 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11959);
+  }
+  /* parser/parser.nit:11961 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11961);
+  }
+  /* parser/parser.nit:11963 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11963);
+  }
+  /* parser/parser.nit:11965 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11965);
+  }
+  /* parser/parser.nit:11967 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11967);
+  }
+  /* parser/parser.nit:11969 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11969);
+  }
+  /* parser/parser.nit:11971 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11971);
+  }
+  /* parser/parser.nit:11973 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11973);
+  }
+  /* parser/parser.nit:11974 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:11987 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11988 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11988);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction252___action[] = "parser::ReduceAction252::(parser::ReduceAction::action)";
+void parser___ReduceAction252___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 11993;
+  fra.me.meth = LOCATE_parser___ReduceAction252___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11995 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11996 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11997 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11998 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11999 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12000 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12001 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12002 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12003 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12004 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12005 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12006 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12008 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12008);
+  }
+  /* parser/parser.nit:12010 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12010);
+  }
+  /* parser/parser.nit:12012 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12012);
+  }
+  /* parser/parser.nit:12014 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12014);
+  }
+  /* parser/parser.nit:12016 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12016);
+  }
+  /* parser/parser.nit:12018 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12018);
+  }
+  /* parser/parser.nit:12020 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12020);
+  }
+  /* parser/parser.nit:12022 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12022);
+  }
+  /* parser/parser.nit:12024 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12024);
+  }
+  /* parser/parser.nit:12025 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], NIT_NULL, fra.me.REG[5], 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[3], fra.me.REG[4]);
+  /* parser/parser.nit:12038 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:12039 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12039);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction253___action[] = "parser::ReduceAction253::(parser::ReduceAction::action)";
+void parser___ReduceAction253___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12044;
+  fra.me.meth = LOCATE_parser___ReduceAction253___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12046 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12047 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12048 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12049 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12050 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12051 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12052 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12054 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12054);
+  }
+  /* parser/parser.nit:12056 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12056);
+  }
+  /* parser/parser.nit:12058 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12058);
+  }
+  /* parser/parser.nit:12060 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12060);
+  }
+  /* parser/parser.nit:12062 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12062);
+  }
+  /* parser/parser.nit:12063 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12073 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12074 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12074);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction254___action[] = "parser::ReduceAction254::(parser::ReduceAction::action)";
+void parser___ReduceAction254___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12079;
+  fra.me.meth = LOCATE_parser___ReduceAction254___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12081 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12082 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12083 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12084 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12085 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12086 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12087 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12088 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12090 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12090);
+  }
+  /* parser/parser.nit:12092 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12092);
+  }
+  /* parser/parser.nit:12094 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12094);
+  }
+  /* parser/parser.nit:12096 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12096);
+  }
+  /* parser/parser.nit:12098 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12098);
+  }
+  /* parser/parser.nit:12100 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12100);
+  }
+  /* parser/parser.nit:12101 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12111 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12112 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12112);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction255___action[] = "parser::ReduceAction255::(parser::ReduceAction::action)";
+void parser___ReduceAction255___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12117;
+  fra.me.meth = LOCATE_parser___ReduceAction255___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12119 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12120 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12121 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12122 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12123 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12124 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12125 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12126 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12128 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12128);
+  }
+  /* parser/parser.nit:12130 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12130);
+  }
+  /* parser/parser.nit:12132 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12132);
+  }
+  /* parser/parser.nit:12134 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12134);
+  }
+  /* parser/parser.nit:12136 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12136);
+  }
+  /* parser/parser.nit:12138 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12138);
+  }
+  /* parser/parser.nit:12139 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12149 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12150 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12150);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction256___action[] = "parser::ReduceAction256::(parser::ReduceAction::action)";
+void parser___ReduceAction256___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12155;
+  fra.me.meth = LOCATE_parser___ReduceAction256___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12157 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12158 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12159 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12160 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12161 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12162 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12163 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12164 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12165 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12167 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12167);
+  }
+  /* parser/parser.nit:12169 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12169);
+  }
+  /* parser/parser.nit:12171 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12171);
+  }
+  /* parser/parser.nit:12173 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12173);
+  }
+  /* parser/parser.nit:12175 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12175);
+  }
+  /* parser/parser.nit:12177 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12177);
+  }
+  /* parser/parser.nit:12179 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12179);
+  }
+  /* parser/parser.nit:12180 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12190 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12191 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12191);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction257___action[] = "parser::ReduceAction257::(parser::ReduceAction::action)";
+void parser___ReduceAction257___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12196;
+  fra.me.meth = LOCATE_parser___ReduceAction257___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12198 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12199 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12200 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12201 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12202 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12203 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12204 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12205 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12207 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12207);
+  }
+  /* parser/parser.nit:12209 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12209);
+  }
+  /* parser/parser.nit:12211 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12211);
+  }
+  /* parser/parser.nit:12213 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12213);
+  }
+  /* parser/parser.nit:12215 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12215);
+  }
+  /* parser/parser.nit:12217 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12217);
+  }
+  /* parser/parser.nit:12218 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12228 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12229 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12229);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction258___action[] = "parser::ReduceAction258::(parser::ReduceAction::action)";
+void parser___ReduceAction258___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12234;
+  fra.me.meth = LOCATE_parser___ReduceAction258___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12236 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12237 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12238 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12239 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12240 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12241 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12242 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12243 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12244 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12246 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12246);
+  }
+  /* parser/parser.nit:12248 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12248);
+  }
+  /* parser/parser.nit:12250 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12250);
+  }
+  /* parser/parser.nit:12252 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12252);
+  }
+  /* parser/parser.nit:12254 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12254);
+  }
+  /* parser/parser.nit:12256 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12256);
+  }
+  /* parser/parser.nit:12258 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12258);
+  }
+  /* parser/parser.nit:12259 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12269 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12270 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12270);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction259___action[] = "parser::ReduceAction259::(parser::ReduceAction::action)";
+void parser___ReduceAction259___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12275;
+  fra.me.meth = LOCATE_parser___ReduceAction259___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12277 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12278 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12279 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12280 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12281 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12282 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12283 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12284 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12285 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12287 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12287);
+  }
+  /* parser/parser.nit:12289 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12289);
+  }
+  /* parser/parser.nit:12291 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12291);
+  }
+  /* parser/parser.nit:12293 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12293);
+  }
+  /* parser/parser.nit:12295 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12295);
+  }
+  /* parser/parser.nit:12297 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12297);
+  }
+  /* parser/parser.nit:12299 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12299);
+  }
+  /* parser/parser.nit:12300 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12310 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12311 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12311);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction260___action[] = "parser::ReduceAction260::(parser::ReduceAction::action)";
+void parser___ReduceAction260___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12316;
+  fra.me.meth = LOCATE_parser___ReduceAction260___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12318 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12319 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12320 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12321 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12322 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12323 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12324 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12325 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12326 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12327 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12329 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12329);
+  }
+  /* parser/parser.nit:12331 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12331);
+  }
+  /* parser/parser.nit:12333 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12333);
+  }
+  /* parser/parser.nit:12335 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12335);
+  }
+  /* parser/parser.nit:12337 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12337);
+  }
+  /* parser/parser.nit:12339 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12339);
+  }
+  /* parser/parser.nit:12341 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12341);
+  }
+  /* parser/parser.nit:12343 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12343);
+  }
+  /* parser/parser.nit:12344 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12354 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12355 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12355);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction261___action[] = "parser::ReduceAction261::(parser::ReduceAction::action)";
+void parser___ReduceAction261___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12360;
+  fra.me.meth = LOCATE_parser___ReduceAction261___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12362 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12363 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12364 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12365 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12366 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12367 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12368 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12369 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12371 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12371);
+  }
+  /* parser/parser.nit:12373 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12373);
+  }
+  /* parser/parser.nit:12375 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12375);
+  }
+  /* parser/parser.nit:12377 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12377);
+  }
+  /* parser/parser.nit:12379 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12379);
+  }
+  /* parser/parser.nit:12380 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12390 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12391 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12391);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction262___action[] = "parser::ReduceAction262::(parser::ReduceAction::action)";
+void parser___ReduceAction262___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12396;
+  fra.me.meth = LOCATE_parser___ReduceAction262___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12398 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12399 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12400 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12401 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12402 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12403 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12404 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12405 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12406 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12408 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12408);
+  }
+  /* parser/parser.nit:12410 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12410);
+  }
+  /* parser/parser.nit:12412 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12412);
+  }
+  /* parser/parser.nit:12414 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12414);
+  }
+  /* parser/parser.nit:12416 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12416);
+  }
+  /* parser/parser.nit:12418 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12418);
+  }
+  /* parser/parser.nit:12419 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12429 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12430 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12430);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction263___action[] = "parser::ReduceAction263::(parser::ReduceAction::action)";
+void parser___ReduceAction263___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12435;
+  fra.me.meth = LOCATE_parser___ReduceAction263___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12437 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12438 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12439 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12440 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12441 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12442 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12443 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12444 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12445 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12447 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12447);
+  }
+  /* parser/parser.nit:12449 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12449);
+  }
+  /* parser/parser.nit:12451 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12451);
+  }
+  /* parser/parser.nit:12453 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12453);
+  }
+  /* parser/parser.nit:12455 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12455);
+  }
+  /* parser/parser.nit:12457 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12457);
+  }
+  /* parser/parser.nit:12458 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12468 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12469 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12469);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction264___action[] = "parser::ReduceAction264::(parser::ReduceAction::action)";
+void parser___ReduceAction264___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12474;
+  fra.me.meth = LOCATE_parser___ReduceAction264___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12476 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12477 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12478 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12479 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12480 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12481 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12482 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12483 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12484 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12485 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12487 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12487);
+  }
+  /* parser/parser.nit:12489 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12489);
+  }
+  /* parser/parser.nit:12491 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12491);
+  }
+  /* parser/parser.nit:12493 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12493);
+  }
+  /* parser/parser.nit:12495 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12495);
+  }
+  /* parser/parser.nit:12497 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12497);
+  }
+  /* parser/parser.nit:12499 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12499);
+  }
+  /* parser/parser.nit:12500 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12510 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12511 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12511);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction265___action[] = "parser::ReduceAction265::(parser::ReduceAction::action)";
+void parser___ReduceAction265___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12516;
+  fra.me.meth = LOCATE_parser___ReduceAction265___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12518 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12519 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12520 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12521 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12522 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12523 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12524 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12525 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12526 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12528 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12528);
+  }
+  /* parser/parser.nit:12530 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12530);
+  }
+  /* parser/parser.nit:12532 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12532);
+  }
+  /* parser/parser.nit:12534 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12534);
+  }
+  /* parser/parser.nit:12536 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12536);
+  }
+  /* parser/parser.nit:12538 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12538);
+  }
+  /* parser/parser.nit:12539 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12549 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12550 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12550);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction266___action[] = "parser::ReduceAction266::(parser::ReduceAction::action)";
+void parser___ReduceAction266___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12555;
+  fra.me.meth = LOCATE_parser___ReduceAction266___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12557 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12558 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12559 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12560 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12561 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12562 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12563 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12564 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12565 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12566 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12568 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12568);
+  }
+  /* parser/parser.nit:12570 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12570);
+  }
+  /* parser/parser.nit:12572 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12572);
+  }
+  /* parser/parser.nit:12574 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12574);
+  }
+  /* parser/parser.nit:12576 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12576);
+  }
+  /* parser/parser.nit:12578 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12578);
+  }
+  /* parser/parser.nit:12580 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12580);
+  }
+  /* parser/parser.nit:12581 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12591 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12592 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12592);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction267___action[] = "parser::ReduceAction267::(parser::ReduceAction::action)";
+void parser___ReduceAction267___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12597;
+  fra.me.meth = LOCATE_parser___ReduceAction267___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12599 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12600 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12601 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12602 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12603 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12604 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12605 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12606 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12607 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12608 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12610 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12610);
+  }
+  /* parser/parser.nit:12612 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12612);
+  }
+  /* parser/parser.nit:12614 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12614);
+  }
+  /* parser/parser.nit:12616 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12616);
+  }
+  /* parser/parser.nit:12618 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12618);
+  }
+  /* parser/parser.nit:12620 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12620);
+  }
+  /* parser/parser.nit:12622 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12622);
+  }
+  /* parser/parser.nit:12623 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12633 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12634 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12634);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction268___action[] = "parser::ReduceAction268::(parser::ReduceAction::action)";
+void parser___ReduceAction268___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12639;
+  fra.me.meth = LOCATE_parser___ReduceAction268___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12641 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12642 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12643 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12644 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12645 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12646 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12647 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12648 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12649 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12650 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12651 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12653 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12653);
+  }
+  /* parser/parser.nit:12655 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12655);
+  }
+  /* parser/parser.nit:12657 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12657);
+  }
+  /* parser/parser.nit:12659 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12659);
+  }
+  /* parser/parser.nit:12661 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12661);
+  }
+  /* parser/parser.nit:12663 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12663);
+  }
+  /* parser/parser.nit:12665 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12665);
+  }
+  /* parser/parser.nit:12667 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12667);
+  }
+  /* parser/parser.nit:12668 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12678 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12679 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12679);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction269___action[] = "parser::ReduceAction269::(parser::ReduceAction::action)";
+void parser___ReduceAction269___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12684;
+  fra.me.meth = LOCATE_parser___ReduceAction269___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12686 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12687 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12688 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12689 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12690 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12691 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12693 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12693);
+  }
+  /* parser/parser.nit:12695 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12695);
+  }
+  /* parser/parser.nit:12697 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12697);
+  }
+  /* parser/parser.nit:12699 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12699);
+  }
+  /* parser/parser.nit:12701 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12701);
+  }
+  /* parser/parser.nit:12702 */
+  fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:12711 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12712 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12712);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction270___action[] = "parser::ReduceAction270::(parser::ReduceAction::action)";
+void parser___ReduceAction270___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12717;
+  fra.me.meth = LOCATE_parser___ReduceAction270___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12719 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12720 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12721 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12722 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12723 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12724 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12725 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12727 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12727);
+  }
+  /* parser/parser.nit:12729 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12729);
+  }
+  /* parser/parser.nit:12731 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12731);
+  }
+  /* parser/parser.nit:12733 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12733);
+  }
+  /* parser/parser.nit:12735 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12735);
+  }
+  /* parser/parser.nit:12737 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12737);
+  }
+  /* parser/parser.nit:12738 */
+  fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:12747 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12748 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12748);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction271___action[] = "parser::ReduceAction271::(parser::ReduceAction::action)";
+void parser___ReduceAction271___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12753;
+  fra.me.meth = LOCATE_parser___ReduceAction271___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12755 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12756 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12757 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12758 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12759 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12760 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12761 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12763 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12763);
+  }
+  /* parser/parser.nit:12765 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12765);
+  }
+  /* parser/parser.nit:12767 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12767);
+  }
+  /* parser/parser.nit:12769 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12769);
+  }
+  /* parser/parser.nit:12771 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12771);
+  }
+  /* parser/parser.nit:12773 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12773);
+  }
+  /* parser/parser.nit:12774 */
+  fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(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:12783 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12784 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12784);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction272___action[] = "parser::ReduceAction272::(parser::ReduceAction::action)";
+void parser___ReduceAction272___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12789;
+  fra.me.meth = LOCATE_parser___ReduceAction272___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12791 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12792 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12793 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12794 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12795 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12796 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12797 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12798 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12800 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12800);
+  }
+  /* parser/parser.nit:12802 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12802);
+  }
+  /* parser/parser.nit:12804 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12804);
+  }
+  /* parser/parser.nit:12806 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12806);
+  }
+  /* parser/parser.nit:12808 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12808);
+  }
+  /* parser/parser.nit:12810 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12810);
+  }
+  /* parser/parser.nit:12812 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12812);
+  }
+  /* parser/parser.nit:12813 */
+  fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(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:12822 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12823 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12823);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction273___action[] = "parser::ReduceAction273::(parser::ReduceAction::action)";
+void parser___ReduceAction273___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12828;
+  fra.me.meth = LOCATE_parser___ReduceAction273___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12830 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12831 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12832 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12833 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12834 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12835 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12836 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12838 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12838);
+  }
+  /* parser/parser.nit:12840 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12840);
+  }
+  /* parser/parser.nit:12842 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12842);
+  }
+  /* parser/parser.nit:12844 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12844);
+  }
+  /* parser/parser.nit:12845 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:12856 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12857 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12857);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction274___action[] = "parser::ReduceAction274::(parser::ReduceAction::action)";
+void parser___ReduceAction274___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12862;
+  fra.me.meth = LOCATE_parser___ReduceAction274___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12864 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12865 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12866 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12867 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12868 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12869 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12870 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12871 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12873 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12873);
+  }
+  /* parser/parser.nit:12875 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12875);
+  }
+  /* parser/parser.nit:12877 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12877);
+  }
+  /* parser/parser.nit:12879 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12879);
+  }
+  /* parser/parser.nit:12881 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12881);
+  }
+  /* parser/parser.nit:12882 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:12893 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12894 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12894);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction275___action[] = "parser::ReduceAction275::(parser::ReduceAction::action)";
+void parser___ReduceAction275___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12899;
+  fra.me.meth = LOCATE_parser___ReduceAction275___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12901 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12902 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12903 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12904 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12905 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12906 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12907 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12908 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12910 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12910);
+  }
+  /* parser/parser.nit:12912 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12912);
+  }
+  /* parser/parser.nit:12914 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12914);
+  }
+  /* parser/parser.nit:12916 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12916);
+  }
+  /* parser/parser.nit:12918 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12918);
+  }
+  /* parser/parser.nit:12919 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:12930 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12931 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12931);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction276___action[] = "parser::ReduceAction276::(parser::ReduceAction::action)";
+void parser___ReduceAction276___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12936;
+  fra.me.meth = LOCATE_parser___ReduceAction276___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12938 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12939 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12940 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12941 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12942 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12943 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12944 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12945 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12946 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12948 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12948);
+  }
+  /* parser/parser.nit:12950 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12950);
+  }
+  /* parser/parser.nit:12952 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12952);
+  }
+  /* parser/parser.nit:12954 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12954);
+  }
+  /* parser/parser.nit:12956 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12956);
+  }
+  /* parser/parser.nit:12958 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12958);
+  }
+  /* parser/parser.nit:12959 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:12970 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12971 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12971);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction277___action[] = "parser::ReduceAction277::(parser::ReduceAction::action)";
+void parser___ReduceAction277___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 12976;
+  fra.me.meth = LOCATE_parser___ReduceAction277___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12978 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12979 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12980 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12981 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12982 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12983 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12984 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12985 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12987 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12987);
+  }
+  /* parser/parser.nit:12989 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12989);
+  }
+  /* parser/parser.nit:12991 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12991);
+  }
+  /* parser/parser.nit:12993 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12993);
+  }
+  /* parser/parser.nit:12995 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12995);
+  }
+  /* parser/parser.nit:12996 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13007 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13008 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13008);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction278___action[] = "parser::ReduceAction278::(parser::ReduceAction::action)";
+void parser___ReduceAction278___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13013;
+  fra.me.meth = LOCATE_parser___ReduceAction278___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13015 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13016 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13017 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13018 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13019 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13020 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13021 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13022 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13023 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13025 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13025);
+  }
+  /* parser/parser.nit:13027 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13027);
+  }
+  /* parser/parser.nit:13029 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13029);
+  }
+  /* parser/parser.nit:13031 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13031);
+  }
+  /* parser/parser.nit:13033 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13033);
+  }
+  /* parser/parser.nit:13035 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13035);
+  }
+  /* parser/parser.nit:13036 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13047 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13048 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13048);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction279___action[] = "parser::ReduceAction279::(parser::ReduceAction::action)";
+void parser___ReduceAction279___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13053;
+  fra.me.meth = LOCATE_parser___ReduceAction279___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13055 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13056 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13057 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13058 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13059 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13060 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13061 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13062 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13063 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13065 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13065);
+  }
+  /* parser/parser.nit:13067 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13067);
+  }
+  /* parser/parser.nit:13069 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13069);
+  }
+  /* parser/parser.nit:13071 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13071);
+  }
+  /* parser/parser.nit:13073 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13073);
+  }
+  /* parser/parser.nit:13075 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13075);
+  }
+  /* parser/parser.nit:13076 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13087 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13088 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13088);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction280___action[] = "parser::ReduceAction280::(parser::ReduceAction::action)";
+void parser___ReduceAction280___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13093;
+  fra.me.meth = LOCATE_parser___ReduceAction280___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13095 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13096 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13097 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13098 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13099 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13100 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13101 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13102 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13103 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13104 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13106 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13106);
+  }
+  /* parser/parser.nit:13108 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13108);
+  }
+  /* parser/parser.nit:13110 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13110);
+  }
+  /* parser/parser.nit:13112 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13112);
+  }
+  /* parser/parser.nit:13114 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13114);
+  }
+  /* parser/parser.nit:13116 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13116);
+  }
+  /* parser/parser.nit:13118 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13118);
+  }
+  /* parser/parser.nit:13119 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13130 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13131 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13131);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction281___action[] = "parser::ReduceAction281::(parser::ReduceAction::action)";
+void parser___ReduceAction281___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13136;
+  fra.me.meth = LOCATE_parser___ReduceAction281___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13138 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13139 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13140 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13141 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13142 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13143 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13144 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13145 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13147 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13147);
+  }
+  /* parser/parser.nit:13149 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13149);
+  }
+  /* parser/parser.nit:13151 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13151);
+  }
+  /* parser/parser.nit:13153 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13153);
+  }
+  /* parser/parser.nit:13155 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13155);
+  }
+  /* parser/parser.nit:13156 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13167 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13168 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13168);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction282___action[] = "parser::ReduceAction282::(parser::ReduceAction::action)";
+void parser___ReduceAction282___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13173;
+  fra.me.meth = LOCATE_parser___ReduceAction282___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13175 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13176 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13177 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13178 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13179 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13180 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13181 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13182 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13183 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13185 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13185);
+  }
+  /* parser/parser.nit:13187 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13187);
+  }
+  /* parser/parser.nit:13189 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13189);
+  }
+  /* parser/parser.nit:13191 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13191);
+  }
+  /* parser/parser.nit:13193 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13193);
+  }
+  /* parser/parser.nit:13195 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13195);
+  }
+  /* parser/parser.nit:13196 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13207 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13208 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13208);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction283___action[] = "parser::ReduceAction283::(parser::ReduceAction::action)";
+void parser___ReduceAction283___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13213;
+  fra.me.meth = LOCATE_parser___ReduceAction283___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13215 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13216 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13218 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13219 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13220 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13221 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13222 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13223 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13225 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13225);
+  }
+  /* parser/parser.nit:13227 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13227);
+  }
+  /* parser/parser.nit:13229 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13229);
+  }
+  /* parser/parser.nit:13231 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13231);
+  }
+  /* parser/parser.nit:13233 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13233);
+  }
+  /* parser/parser.nit:13235 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13235);
+  }
+  /* parser/parser.nit:13236 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13247 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13248 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13248);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction284___action[] = "parser::ReduceAction284::(parser::ReduceAction::action)";
+void parser___ReduceAction284___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13253;
+  fra.me.meth = LOCATE_parser___ReduceAction284___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13255 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13256 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13257 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13258 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13259 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13260 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13261 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13262 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13263 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13264 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13266 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13266);
+  }
+  /* parser/parser.nit:13268 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13268);
+  }
+  /* parser/parser.nit:13270 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13270);
+  }
+  /* parser/parser.nit:13272 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13272);
+  }
+  /* parser/parser.nit:13274 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13274);
+  }
+  /* parser/parser.nit:13276 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13276);
+  }
+  /* parser/parser.nit:13278 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13278);
+  }
+  /* parser/parser.nit:13279 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13290 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13291 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13291);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction285___action[] = "parser::ReduceAction285::(parser::ReduceAction::action)";
+void parser___ReduceAction285___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13296;
+  fra.me.meth = LOCATE_parser___ReduceAction285___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13298 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13299 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13300 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13301 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13302 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13303 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13304 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13305 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13306 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13308 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13308);
+  }
+  /* parser/parser.nit:13310 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13310);
+  }
+  /* parser/parser.nit:13312 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13312);
+  }
+  /* parser/parser.nit:13314 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13314);
+  }
+  /* parser/parser.nit:13316 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13316);
+  }
+  /* parser/parser.nit:13318 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13318);
+  }
+  /* parser/parser.nit:13319 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13330 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13331 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13331);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction286___action[] = "parser::ReduceAction286::(parser::ReduceAction::action)";
+void parser___ReduceAction286___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13336;
+  fra.me.meth = LOCATE_parser___ReduceAction286___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13338 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13339 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13340 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13341 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13342 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13343 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13344 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13345 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13346 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13347 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13349 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13349);
+  }
+  /* parser/parser.nit:13351 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13351);
+  }
+  /* parser/parser.nit:13353 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13353);
+  }
+  /* parser/parser.nit:13355 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13355);
+  }
+  /* parser/parser.nit:13357 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13357);
+  }
+  /* parser/parser.nit:13359 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13359);
+  }
+  /* parser/parser.nit:13361 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13361);
+  }
+  /* parser/parser.nit:13362 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13373 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13374 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13374);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction287___action[] = "parser::ReduceAction287::(parser::ReduceAction::action)";
+void parser___ReduceAction287___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13379;
+  fra.me.meth = LOCATE_parser___ReduceAction287___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13381 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13382 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13383 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13384 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13385 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13386 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13387 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13388 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13389 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13390 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13392 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13392);
+  }
+  /* parser/parser.nit:13394 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13394);
+  }
+  /* parser/parser.nit:13396 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13396);
+  }
+  /* parser/parser.nit:13398 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13398);
+  }
+  /* parser/parser.nit:13400 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13400);
+  }
+  /* parser/parser.nit:13402 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13402);
+  }
+  /* parser/parser.nit:13404 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13404);
+  }
+  /* parser/parser.nit:13405 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13416 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13417 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13417);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction288___action[] = "parser::ReduceAction288::(parser::ReduceAction::action)";
+void parser___ReduceAction288___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13422;
+  fra.me.meth = LOCATE_parser___ReduceAction288___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13424 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13425 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13426 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13427 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13428 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13429 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13430 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13431 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13432 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13433 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13434 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13436 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13436);
+  }
+  /* parser/parser.nit:13438 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13438);
+  }
+  /* parser/parser.nit:13440 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13440);
+  }
+  /* parser/parser.nit:13442 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13442);
+  }
+  /* parser/parser.nit:13444 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13444);
+  }
+  /* parser/parser.nit:13446 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13446);
+  }
+  /* parser/parser.nit:13448 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13448);
+  }
+  /* parser/parser.nit:13450 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13450);
+  }
+  /* parser/parser.nit:13451 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13462 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13463 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13463);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction289___action[] = "parser::ReduceAction289::(parser::ReduceAction::action)";
+void parser___ReduceAction289___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13468;
+  fra.me.meth = LOCATE_parser___ReduceAction289___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13470 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13471 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13472 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13473 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13474 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13475 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13476 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13477 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13479 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13479);
+  }
+  /* parser/parser.nit:13481 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13481);
+  }
+  /* parser/parser.nit:13483 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13483);
+  }
+  /* parser/parser.nit:13485 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13485);
+  }
+  /* parser/parser.nit:13487 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13487);
+  }
+  /* parser/parser.nit:13488 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13499 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13500 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13500);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction290___action[] = "parser::ReduceAction290::(parser::ReduceAction::action)";
+void parser___ReduceAction290___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13505;
+  fra.me.meth = LOCATE_parser___ReduceAction290___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13507 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13508 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13509 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13510 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13511 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13512 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13513 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13514 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13515 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13517 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13517);
+  }
+  /* parser/parser.nit:13519 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13519);
+  }
+  /* parser/parser.nit:13521 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13521);
+  }
+  /* parser/parser.nit:13523 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13523);
+  }
+  /* parser/parser.nit:13525 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13525);
+  }
+  /* parser/parser.nit:13527 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13527);
+  }
+  /* parser/parser.nit:13528 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13539 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13540 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13540);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction291___action[] = "parser::ReduceAction291::(parser::ReduceAction::action)";
+void parser___ReduceAction291___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13545;
+  fra.me.meth = LOCATE_parser___ReduceAction291___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13547 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13548 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13549 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13550 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13551 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13552 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13553 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13554 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13555 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13557 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13557);
+  }
+  /* parser/parser.nit:13559 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13559);
+  }
+  /* parser/parser.nit:13561 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13561);
+  }
+  /* parser/parser.nit:13563 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13563);
+  }
+  /* parser/parser.nit:13565 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13565);
+  }
+  /* parser/parser.nit:13567 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13567);
+  }
+  /* parser/parser.nit:13568 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13579 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13580 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13580);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction292___action[] = "parser::ReduceAction292::(parser::ReduceAction::action)";
+void parser___ReduceAction292___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13585;
+  fra.me.meth = LOCATE_parser___ReduceAction292___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13587 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13588 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13589 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13590 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13591 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13592 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13593 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13594 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13595 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13596 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13598 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13598);
+  }
+  /* parser/parser.nit:13600 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13600);
+  }
+  /* parser/parser.nit:13602 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13602);
+  }
+  /* parser/parser.nit:13604 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13604);
+  }
+  /* parser/parser.nit:13606 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13606);
+  }
+  /* parser/parser.nit:13608 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13608);
+  }
+  /* parser/parser.nit:13610 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13610);
+  }
+  /* parser/parser.nit:13611 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13622 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13623 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13623);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction293___action[] = "parser::ReduceAction293::(parser::ReduceAction::action)";
+void parser___ReduceAction293___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13628;
+  fra.me.meth = LOCATE_parser___ReduceAction293___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13630 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13631 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13632 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13633 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13634 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13635 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13636 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13637 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13638 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13640 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13640);
+  }
+  /* parser/parser.nit:13642 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13642);
+  }
+  /* parser/parser.nit:13644 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13644);
+  }
+  /* parser/parser.nit:13646 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13646);
+  }
+  /* parser/parser.nit:13648 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13648);
+  }
+  /* parser/parser.nit:13650 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13650);
+  }
+  /* parser/parser.nit:13651 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13662 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13663 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13663);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction294___action[] = "parser::ReduceAction294::(parser::ReduceAction::action)";
+void parser___ReduceAction294___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13668;
+  fra.me.meth = LOCATE_parser___ReduceAction294___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13670 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13671 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13672 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13673 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13674 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13675 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13676 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13677 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13678 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13679 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13681 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13681);
+  }
+  /* parser/parser.nit:13683 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13683);
+  }
+  /* parser/parser.nit:13685 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13685);
+  }
+  /* parser/parser.nit:13687 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13687);
+  }
+  /* parser/parser.nit:13689 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13689);
+  }
+  /* parser/parser.nit:13691 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13691);
+  }
+  /* parser/parser.nit:13693 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13693);
+  }
+  /* parser/parser.nit:13694 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13705 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13706 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13706);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction295___action[] = "parser::ReduceAction295::(parser::ReduceAction::action)";
+void parser___ReduceAction295___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13711;
+  fra.me.meth = LOCATE_parser___ReduceAction295___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13713 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13714 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13715 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13716 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13717 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13718 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13719 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13720 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13721 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13722 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13724 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13724);
+  }
+  /* parser/parser.nit:13726 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13726);
+  }
+  /* parser/parser.nit:13728 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13728);
+  }
+  /* parser/parser.nit:13730 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13730);
+  }
+  /* parser/parser.nit:13732 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13732);
+  }
+  /* parser/parser.nit:13734 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13734);
+  }
+  /* parser/parser.nit:13736 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13736);
+  }
+  /* parser/parser.nit:13737 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13748 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13749 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13749);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction296___action[] = "parser::ReduceAction296::(parser::ReduceAction::action)";
+void parser___ReduceAction296___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13754;
+  fra.me.meth = LOCATE_parser___ReduceAction296___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13756 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13757 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13758 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13759 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13760 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13761 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13762 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13763 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13764 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13765 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13766 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13768 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13768);
+  }
+  /* parser/parser.nit:13770 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13770);
+  }
+  /* parser/parser.nit:13772 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13772);
+  }
+  /* parser/parser.nit:13774 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13774);
+  }
+  /* parser/parser.nit:13776 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13776);
+  }
+  /* parser/parser.nit:13778 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13778);
+  }
+  /* parser/parser.nit:13780 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13780);
+  }
+  /* parser/parser.nit:13782 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13782);
+  }
+  /* parser/parser.nit:13783 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13794 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13795 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13795);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction297___action[] = "parser::ReduceAction297::(parser::ReduceAction::action)";
+void parser___ReduceAction297___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13800;
+  fra.me.meth = LOCATE_parser___ReduceAction297___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13802 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13803 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13804 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13805 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13806 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13807 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13808 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13809 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13810 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13812 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13812);
+  }
+  /* parser/parser.nit:13814 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13814);
+  }
+  /* parser/parser.nit:13816 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13816);
+  }
+  /* parser/parser.nit:13818 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13818);
+  }
+  /* parser/parser.nit:13820 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13820);
+  }
+  /* parser/parser.nit:13822 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13822);
+  }
+  /* parser/parser.nit:13823 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13834 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13835 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13835);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction298___action[] = "parser::ReduceAction298::(parser::ReduceAction::action)";
+void parser___ReduceAction298___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13840;
+  fra.me.meth = LOCATE_parser___ReduceAction298___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13842 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13843 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13844 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13845 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13846 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13847 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13848 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13849 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13850 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13851 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13853 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13853);
+  }
+  /* parser/parser.nit:13855 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13855);
+  }
+  /* parser/parser.nit:13857 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13857);
+  }
+  /* parser/parser.nit:13859 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13859);
+  }
+  /* parser/parser.nit:13861 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13861);
+  }
+  /* parser/parser.nit:13863 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13863);
+  }
+  /* parser/parser.nit:13865 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13865);
+  }
+  /* parser/parser.nit:13866 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13877 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13878 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13878);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction299___action[] = "parser::ReduceAction299::(parser::ReduceAction::action)";
+void parser___ReduceAction299___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13883;
+  fra.me.meth = LOCATE_parser___ReduceAction299___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13885 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13886 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13887 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13888 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13889 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13890 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13891 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13892 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13893 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13894 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13896 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13896);
+  }
+  /* parser/parser.nit:13898 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13898);
+  }
+  /* parser/parser.nit:13900 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13900);
+  }
+  /* parser/parser.nit:13902 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13902);
+  }
+  /* parser/parser.nit:13904 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13904);
+  }
+  /* parser/parser.nit:13906 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13906);
+  }
+  /* parser/parser.nit:13908 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13908);
+  }
+  /* parser/parser.nit:13909 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13920 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13921 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13921);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction300___action[] = "parser::ReduceAction300::(parser::ReduceAction::action)";
+void parser___ReduceAction300___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13926;
+  fra.me.meth = LOCATE_parser___ReduceAction300___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13928 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13929 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13930 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13931 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13932 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13933 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13934 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13935 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13936 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13937 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13938 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13940 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13940);
+  }
+  /* parser/parser.nit:13942 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13942);
+  }
+  /* parser/parser.nit:13944 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13944);
+  }
+  /* parser/parser.nit:13946 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13946);
+  }
+  /* parser/parser.nit:13948 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13948);
+  }
+  /* parser/parser.nit:13950 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13950);
+  }
+  /* parser/parser.nit:13952 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13952);
+  }
+  /* parser/parser.nit:13954 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13954);
+  }
+  /* parser/parser.nit:13955 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13966 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13967 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13967);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction301___action[] = "parser::ReduceAction301::(parser::ReduceAction::action)";
+void parser___ReduceAction301___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 13972;
+  fra.me.meth = LOCATE_parser___ReduceAction301___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13974 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13975 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13976 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13977 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13978 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13979 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13980 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13981 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13982 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13983 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13985 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13985);
+  }
+  /* parser/parser.nit:13987 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13987);
+  }
+  /* parser/parser.nit:13989 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13989);
+  }
+  /* parser/parser.nit:13991 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13991);
+  }
+  /* parser/parser.nit:13993 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13993);
+  }
+  /* parser/parser.nit:13995 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13995);
+  }
+  /* parser/parser.nit:13997 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13997);
+  }
+  /* parser/parser.nit:13998 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14009 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14010 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14010);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction302___action[] = "parser::ReduceAction302::(parser::ReduceAction::action)";
+void parser___ReduceAction302___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14015;
+  fra.me.meth = LOCATE_parser___ReduceAction302___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14017 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14018 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14019 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14020 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14021 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14022 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14023 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14024 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14025 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14026 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14027 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14029 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14029);
+  }
+  /* parser/parser.nit:14031 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14031);
+  }
+  /* parser/parser.nit:14033 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14033);
+  }
+  /* parser/parser.nit:14035 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14035);
+  }
+  /* parser/parser.nit:14037 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14037);
+  }
+  /* parser/parser.nit:14039 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14039);
+  }
+  /* parser/parser.nit:14041 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14041);
+  }
+  /* parser/parser.nit:14043 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14043);
+  }
+  /* parser/parser.nit:14044 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14055 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14056 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14056);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction303___action[] = "parser::ReduceAction303::(parser::ReduceAction::action)";
+void parser___ReduceAction303___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14061;
+  fra.me.meth = LOCATE_parser___ReduceAction303___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14063 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14064 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14065 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14066 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14067 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14068 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14069 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14070 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14071 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14072 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14073 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14075 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14075);
+  }
+  /* parser/parser.nit:14077 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14077);
+  }
+  /* parser/parser.nit:14079 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14079);
+  }
+  /* parser/parser.nit:14081 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14081);
+  }
+  /* parser/parser.nit:14083 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14083);
+  }
+  /* parser/parser.nit:14085 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14085);
+  }
+  /* parser/parser.nit:14087 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14087);
+  }
+  /* parser/parser.nit:14089 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14089);
+  }
+  /* parser/parser.nit:14090 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14101 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14102 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14102);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction304___action[] = "parser::ReduceAction304::(parser::ReduceAction::action)";
+void parser___ReduceAction304___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14107;
+  fra.me.meth = LOCATE_parser___ReduceAction304___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14109 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14110 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14111 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14112 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14113 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14114 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14115 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14116 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14117 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14118 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14119 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14120 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14122 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14122);
+  }
+  /* parser/parser.nit:14124 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14124);
+  }
+  /* parser/parser.nit:14126 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14126);
+  }
+  /* parser/parser.nit:14128 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14128);
+  }
+  /* parser/parser.nit:14130 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14130);
+  }
+  /* parser/parser.nit:14132 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14132);
+  }
+  /* parser/parser.nit:14134 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14134);
+  }
+  /* parser/parser.nit:14136 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14136);
+  }
+  /* parser/parser.nit:14138 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14138);
+  }
+  /* parser/parser.nit:14139 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14150 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14151 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14151);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction305___action[] = "parser::ReduceAction305::(parser::ReduceAction::action)";
+void parser___ReduceAction305___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14156;
+  fra.me.meth = LOCATE_parser___ReduceAction305___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14158 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14159 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14160 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14161 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14162 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14163 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14165 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14165);
+  }
+  /* parser/parser.nit:14167 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14167);
+  }
+  /* parser/parser.nit:14169 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14169);
+  }
+  /* parser/parser.nit:14171 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14171);
+  }
+  /* parser/parser.nit:14173 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14173);
+  }
+  /* parser/parser.nit:14174 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14185 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14186 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14186);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction306___action[] = "parser::ReduceAction306::(parser::ReduceAction::action)";
+void parser___ReduceAction306___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14191;
+  fra.me.meth = LOCATE_parser___ReduceAction306___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14193 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14194 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14195 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14196 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14197 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14198 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14199 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14201 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14201);
+  }
+  /* parser/parser.nit:14203 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14203);
+  }
+  /* parser/parser.nit:14205 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14205);
+  }
+  /* parser/parser.nit:14207 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14207);
+  }
+  /* parser/parser.nit:14209 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14209);
+  }
+  /* parser/parser.nit:14211 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14211);
+  }
+  /* parser/parser.nit:14212 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14223 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14224 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14224);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction307___action[] = "parser::ReduceAction307::(parser::ReduceAction::action)";
+void parser___ReduceAction307___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14229;
+  fra.me.meth = LOCATE_parser___ReduceAction307___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14231 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14232 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14233 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14234 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14235 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14236 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14237 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14239 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14239);
+  }
+  /* parser/parser.nit:14241 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14241);
+  }
+  /* parser/parser.nit:14243 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14243);
+  }
+  /* parser/parser.nit:14245 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14245);
+  }
+  /* parser/parser.nit:14247 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14247);
+  }
+  /* parser/parser.nit:14249 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14249);
+  }
+  /* parser/parser.nit:14250 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14261 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14262 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14262);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction308___action[] = "parser::ReduceAction308::(parser::ReduceAction::action)";
+void parser___ReduceAction308___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14267;
+  fra.me.meth = LOCATE_parser___ReduceAction308___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14269 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14270 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14271 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14272 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14273 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14274 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14275 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14276 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14278 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14278);
+  }
+  /* parser/parser.nit:14280 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14280);
+  }
+  /* parser/parser.nit:14282 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14282);
+  }
+  /* parser/parser.nit:14284 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14284);
+  }
+  /* parser/parser.nit:14286 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14286);
+  }
+  /* parser/parser.nit:14288 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14288);
+  }
+  /* parser/parser.nit:14290 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14290);
+  }
+  /* parser/parser.nit:14291 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14302 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14303 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14303);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction309___action[] = "parser::ReduceAction309::(parser::ReduceAction::action)";
+void parser___ReduceAction309___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14308;
+  fra.me.meth = LOCATE_parser___ReduceAction309___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14310 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14311 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14312 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14313 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14314 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14315 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14316 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14318 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14318);
+  }
+  /* parser/parser.nit:14320 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14320);
+  }
+  /* parser/parser.nit:14322 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14322);
+  }
+  /* parser/parser.nit:14324 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14324);
+  }
+  /* parser/parser.nit:14326 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14326);
+  }
+  /* parser/parser.nit:14328 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14328);
+  }
+  /* parser/parser.nit:14329 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14340 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14341 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14341);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction310___action[] = "parser::ReduceAction310::(parser::ReduceAction::action)";
+void parser___ReduceAction310___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14346;
+  fra.me.meth = LOCATE_parser___ReduceAction310___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14348 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14349 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14350 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14351 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14352 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14353 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14354 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14355 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14357 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14357);
+  }
+  /* parser/parser.nit:14359 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14359);
+  }
+  /* parser/parser.nit:14361 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14361);
+  }
+  /* parser/parser.nit:14363 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14363);
+  }
+  /* parser/parser.nit:14365 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14365);
+  }
+  /* parser/parser.nit:14367 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14367);
+  }
+  /* parser/parser.nit:14369 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14369);
+  }
+  /* parser/parser.nit:14370 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14381 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14382 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14382);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction311___action[] = "parser::ReduceAction311::(parser::ReduceAction::action)";
+void parser___ReduceAction311___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14387;
+  fra.me.meth = LOCATE_parser___ReduceAction311___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14389 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14390 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14391 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14392 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14393 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14394 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14395 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14396 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14398 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14398);
+  }
+  /* parser/parser.nit:14400 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14400);
+  }
+  /* parser/parser.nit:14402 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14402);
+  }
+  /* parser/parser.nit:14404 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14404);
+  }
+  /* parser/parser.nit:14406 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14406);
+  }
+  /* parser/parser.nit:14408 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14408);
+  }
+  /* parser/parser.nit:14410 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14410);
+  }
+  /* parser/parser.nit:14411 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14422 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14423 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14423);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction312___action[] = "parser::ReduceAction312::(parser::ReduceAction::action)";
+void parser___ReduceAction312___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14428;
+  fra.me.meth = LOCATE_parser___ReduceAction312___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14430 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14431 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14432 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14433 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14434 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14435 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14436 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14437 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14438 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14440 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14440);
+  }
+  /* parser/parser.nit:14442 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14442);
+  }
+  /* parser/parser.nit:14444 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14444);
+  }
+  /* parser/parser.nit:14446 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14446);
+  }
+  /* parser/parser.nit:14448 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14448);
+  }
+  /* parser/parser.nit:14450 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14450);
+  }
+  /* parser/parser.nit:14452 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14452);
+  }
+  /* parser/parser.nit:14454 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14454);
+  }
+  /* parser/parser.nit:14455 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14466 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14467 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14467);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction313___action[] = "parser::ReduceAction313::(parser::ReduceAction::action)";
+void parser___ReduceAction313___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14472;
+  fra.me.meth = LOCATE_parser___ReduceAction313___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14474 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14475 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14476 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14477 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14478 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14479 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14480 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14482 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14482);
+  }
+  /* parser/parser.nit:14484 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14484);
+  }
+  /* parser/parser.nit:14486 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14486);
+  }
+  /* parser/parser.nit:14488 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14488);
+  }
+  /* parser/parser.nit:14490 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14490);
+  }
+  /* parser/parser.nit:14492 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14492);
+  }
+  /* parser/parser.nit:14493 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14504 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14505 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14505);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction314___action[] = "parser::ReduceAction314::(parser::ReduceAction::action)";
+void parser___ReduceAction314___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14510;
+  fra.me.meth = LOCATE_parser___ReduceAction314___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14512 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14513 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14514 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14515 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14516 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14517 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14518 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14519 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14521 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14521);
+  }
+  /* parser/parser.nit:14523 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14523);
+  }
+  /* parser/parser.nit:14525 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14525);
+  }
+  /* parser/parser.nit:14527 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14527);
+  }
+  /* parser/parser.nit:14529 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14529);
+  }
+  /* parser/parser.nit:14531 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14531);
+  }
+  /* parser/parser.nit:14533 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14533);
+  }
+  /* parser/parser.nit:14534 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14545 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14546 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14546);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction315___action[] = "parser::ReduceAction315::(parser::ReduceAction::action)";
+void parser___ReduceAction315___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14551;
+  fra.me.meth = LOCATE_parser___ReduceAction315___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14553 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14554 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14555 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14556 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14557 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14558 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14559 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14560 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14562 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14562);
+  }
+  /* parser/parser.nit:14564 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14564);
+  }
+  /* parser/parser.nit:14566 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14566);
+  }
+  /* parser/parser.nit:14568 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14568);
+  }
+  /* parser/parser.nit:14570 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14570);
+  }
+  /* parser/parser.nit:14572 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14572);
+  }
+  /* parser/parser.nit:14574 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14574);
+  }
+  /* parser/parser.nit:14575 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14586 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14587 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14587);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction316___action[] = "parser::ReduceAction316::(parser::ReduceAction::action)";
+void parser___ReduceAction316___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 = 14592;
+  fra.me.meth = LOCATE_parser___ReduceAction316___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14594 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14595 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14596 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14597 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14598 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14599 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14600 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14601 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14602 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14604 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14604);
+  }
+  /* parser/parser.nit:14606 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14606);
+  }
+  /* parser/parser.nit:14608 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14608);
+  }
+  /* parser/parser.nit:14610 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14610);
+  }
+  /* parser/parser.nit:14612 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14612);
+  }
+  /* parser/parser.nit:14614 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14614);
+  }
+  /* parser/parser.nit:14616 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14616);
+  }
+  /* parser/parser.nit:14618 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14618);
+  }
+  /* parser/parser.nit:14619 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14630 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14631 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14631);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction317___action[] = "parser::ReduceAction317::(parser::ReduceAction::action)";
+void parser___ReduceAction317___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14636;
+  fra.me.meth = LOCATE_parser___ReduceAction317___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14638 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14639 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14640 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14641 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14642 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14643 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14644 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14645 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14647 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14647);
+  }
+  /* parser/parser.nit:14649 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14649);
+  }
+  /* parser/parser.nit:14651 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14651);
+  }
+  /* parser/parser.nit:14653 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14653);
+  }
+  /* parser/parser.nit:14655 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14655);
+  }
+  /* parser/parser.nit:14657 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14657);
+  }
+  /* parser/parser.nit:14659 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14659);
+  }
+  /* parser/parser.nit:14660 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14671 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14672 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14672);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction318___action[] = "parser::ReduceAction318::(parser::ReduceAction::action)";
+void parser___ReduceAction318___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14677;
+  fra.me.meth = LOCATE_parser___ReduceAction318___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14679 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14680 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14681 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14682 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14683 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14684 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14685 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14686 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14687 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14689 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14689);
+  }
+  /* parser/parser.nit:14691 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14691);
+  }
+  /* parser/parser.nit:14693 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14693);
+  }
+  /* parser/parser.nit:14695 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14695);
+  }
+  /* parser/parser.nit:14697 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14697);
+  }
+  /* parser/parser.nit:14699 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14699);
+  }
+  /* parser/parser.nit:14701 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14701);
+  }
+  /* parser/parser.nit:14703 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14703);
+  }
+  /* parser/parser.nit:14704 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14715 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14716 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14716);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction319___action[] = "parser::ReduceAction319::(parser::ReduceAction::action)";
+void parser___ReduceAction319___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14721;
+  fra.me.meth = LOCATE_parser___ReduceAction319___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14723 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14724 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14725 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14726 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14727 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14728 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14729 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14730 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14731 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14733 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14733);
+  }
+  /* parser/parser.nit:14735 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14735);
+  }
+  /* parser/parser.nit:14737 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14737);
+  }
+  /* parser/parser.nit:14739 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14739);
+  }
+  /* parser/parser.nit:14741 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14741);
+  }
+  /* parser/parser.nit:14743 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14743);
+  }
+  /* parser/parser.nit:14745 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14745);
+  }
+  /* parser/parser.nit:14747 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14747);
+  }
+  /* parser/parser.nit:14748 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14759 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14760 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14760);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction320___action[] = "parser::ReduceAction320::(parser::ReduceAction::action)";
+void parser___ReduceAction320___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14765;
+  fra.me.meth = LOCATE_parser___ReduceAction320___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14767 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14768 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14769 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14770 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14771 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14772 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14773 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14774 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14775 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14776 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14778 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14778);
+  }
+  /* parser/parser.nit:14780 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14780);
+  }
+  /* parser/parser.nit:14782 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14782);
+  }
+  /* parser/parser.nit:14784 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14784);
+  }
+  /* parser/parser.nit:14786 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14786);
+  }
+  /* parser/parser.nit:14788 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14788);
+  }
+  /* parser/parser.nit:14790 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14790);
+  }
+  /* parser/parser.nit:14792 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14792);
+  }
+  /* parser/parser.nit:14794 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14794);
+  }
+  /* parser/parser.nit:14795 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14806 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14807 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14807);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction321___action[] = "parser::ReduceAction321::(parser::ReduceAction::action)";
+void parser___ReduceAction321___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14812;
+  fra.me.meth = LOCATE_parser___ReduceAction321___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14814 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14815 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14816 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14818 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14819 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14819);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction322___action[] = "parser::ReduceAction322::(parser::ReduceAction::action)";
+void parser___ReduceAction322___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14824;
+  fra.me.meth = LOCATE_parser___ReduceAction322___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14826 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14827 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14828 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14829 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14830 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14832 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14833 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14833);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction324___action[] = "parser::ReduceAction324::(parser::ReduceAction::action)";
+void parser___ReduceAction324___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14838;
+  fra.me.meth = LOCATE_parser___ReduceAction324___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14840 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14841 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14842 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14843 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14845 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14846 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14846);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction325___action[] = "parser::ReduceAction325::(parser::ReduceAction::action)";
+void parser___ReduceAction325___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14851;
+  fra.me.meth = LOCATE_parser___ReduceAction325___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14853 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14854 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14856 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14856);
+  }
+  /* parser/parser.nit:14857 */
+  fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14861 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14862 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14862);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction326___action[] = "parser::ReduceAction326::(parser::ReduceAction::action)";
+void parser___ReduceAction326___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14867;
+  fra.me.meth = LOCATE_parser___ReduceAction326___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14869 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14870 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14871 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14873 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14873);
+  }
+  /* parser/parser.nit:14875 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14875);
+  }
+  /* parser/parser.nit:14876 */
+  fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14880 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14881 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14881);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction327___action[] = "parser::ReduceAction327::(parser::ReduceAction::action)";
+void parser___ReduceAction327___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14886;
+  fra.me.meth = LOCATE_parser___ReduceAction327___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14888 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14889 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14891 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14891);
+  }
+  /* parser/parser.nit:14892 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14897 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14898 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14898);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction328___action[] = "parser::ReduceAction328::(parser::ReduceAction::action)";
+void parser___ReduceAction328___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14903;
+  fra.me.meth = LOCATE_parser___ReduceAction328___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14905 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14906 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14907 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14909 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14909);
+  }
+  /* parser/parser.nit:14911 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14911);
+  }
+  /* parser/parser.nit:14912 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14917 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14918 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14918);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction329___action[] = "parser::ReduceAction329::(parser::ReduceAction::action)";
+void parser___ReduceAction329___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14923;
+  fra.me.meth = LOCATE_parser___ReduceAction329___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14925 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14926 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14927 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14929 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14929);
+  }
+  /* parser/parser.nit:14931 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14931);
+  }
+  /* parser/parser.nit:14932 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14937 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14938 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14938);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction330___action[] = "parser::ReduceAction330::(parser::ReduceAction::action)";
+void parser___ReduceAction330___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14943;
+  fra.me.meth = LOCATE_parser___ReduceAction330___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14945 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14946 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14947 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14948 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14950 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14950);
+  }
+  /* parser/parser.nit:14952 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14952);
+  }
+  /* parser/parser.nit:14954 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14954);
+  }
+  /* parser/parser.nit:14955 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14960 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14961 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14961);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction331___action[] = "parser::ReduceAction331::(parser::ReduceAction::action)";
+void parser___ReduceAction331___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14966;
+  fra.me.meth = LOCATE_parser___ReduceAction331___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14968 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14969 */
+  fra.me.REG[3] = NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility();
+  /* parser/parser.nit:14970 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14971 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14971);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction332___action[] = "parser::ReduceAction332::(parser::ReduceAction::action)";
+void parser___ReduceAction332___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14976;
+  fra.me.meth = LOCATE_parser___ReduceAction332___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14978 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14979 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14980 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14982 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwprivate, ID_parser___parser_nodes___TKwprivate)) /*cast nullable TKwprivate*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14982);
+  }
+  /* parser/parser.nit:14983 */
+  fra.me.REG[3] = NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[3]);
+  /* parser/parser.nit:14986 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14987 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14987);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction333___action[] = "parser::ReduceAction333::(parser::ReduceAction::action)";
+void parser___ReduceAction333___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 14992;
+  fra.me.meth = LOCATE_parser___ReduceAction333___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14994 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14995 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14996 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14998 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwprotected, ID_parser___parser_nodes___TKwprotected)) /*cast nullable TKwprotected*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14998);
+  }
+  /* parser/parser.nit:14999 */
+  fra.me.REG[3] = NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[3]);
+  /* parser/parser.nit:15002 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15003 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15003);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction334___action[] = "parser::ReduceAction334::(parser::ReduceAction::action)";
+void parser___ReduceAction334___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15008;
+  fra.me.meth = LOCATE_parser___ReduceAction334___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15010 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15011 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15012 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15014 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwintrude, ID_parser___parser_nodes___TKwintrude)) /*cast nullable TKwintrude*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15014);
+  }
+  /* parser/parser.nit:15015 */
+  fra.me.REG[3] = NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[3]);
+  /* parser/parser.nit:15018 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15019 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15019);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction335___action[] = "parser::ReduceAction335::(parser::ReduceAction::action)";
+void parser___ReduceAction335___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 = 15024;
+  fra.me.meth = LOCATE_parser___ReduceAction335___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15026 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15027 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15029 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15029);
+  }
+  /* parser/parser.nit:15030 */
+  fra.me.REG[3] = NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15033 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15034 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15034);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction336___action[] = "parser::ReduceAction336::(parser::ReduceAction::action)";
+void parser___ReduceAction336___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15039;
+  fra.me.meth = LOCATE_parser___ReduceAction336___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15041 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15042 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15044 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPlus, ID_parser___parser_nodes___TPlus)) /*cast nullable TPlus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15044);
+  }
+  /* parser/parser.nit:15045 */
+  fra.me.REG[3] = NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15048 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15049 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15049);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction337___action[] = "parser::ReduceAction337::(parser::ReduceAction::action)";
+void parser___ReduceAction337___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15054;
+  fra.me.meth = LOCATE_parser___ReduceAction337___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15056 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15057 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15059 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast nullable TMinus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15059);
+  }
+  /* parser/parser.nit:15060 */
+  fra.me.REG[3] = NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15063 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15064 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15064);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction338___action[] = "parser::ReduceAction338::(parser::ReduceAction::action)";
+void parser___ReduceAction338___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15069;
+  fra.me.meth = LOCATE_parser___ReduceAction338___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15071 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15072 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15074 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStar, ID_parser___parser_nodes___TStar)) /*cast nullable TStar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15074);
+  }
+  /* parser/parser.nit:15075 */
+  fra.me.REG[3] = NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15078 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15079 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15079);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction339___action[] = "parser::ReduceAction339::(parser::ReduceAction::action)";
+void parser___ReduceAction339___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15084;
+  fra.me.meth = LOCATE_parser___ReduceAction339___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15086 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15087 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15089 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TSlash, ID_parser___parser_nodes___TSlash)) /*cast nullable TSlash*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15089);
+  }
+  /* parser/parser.nit:15090 */
+  fra.me.REG[3] = NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15093 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15094 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15094);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction340___action[] = "parser::ReduceAction340::(parser::ReduceAction::action)";
+void parser___ReduceAction340___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15099;
+  fra.me.meth = LOCATE_parser___ReduceAction340___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15101 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15102 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15104 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPercent, ID_parser___parser_nodes___TPercent)) /*cast nullable TPercent*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15104);
+  }
+  /* parser/parser.nit:15105 */
+  fra.me.REG[3] = NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15108 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15109 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15109);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction341___action[] = "parser::ReduceAction341::(parser::ReduceAction::action)";
+void parser___ReduceAction341___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15114;
+  fra.me.meth = LOCATE_parser___ReduceAction341___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15116 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15117 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15119 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TEq, ID_parser___parser_nodes___TEq)) /*cast nullable TEq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15119);
+  }
+  /* parser/parser.nit:15120 */
+  fra.me.REG[3] = NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15123 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15124 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15124);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction342___action[] = "parser::ReduceAction342::(parser::ReduceAction::action)";
+void parser___ReduceAction342___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15129;
+  fra.me.meth = LOCATE_parser___ReduceAction342___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15131 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15132 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15134 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TNe, ID_parser___parser_nodes___TNe)) /*cast nullable TNe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15134);
+  }
+  /* parser/parser.nit:15135 */
+  fra.me.REG[3] = NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[3]);
+  /* parser/parser.nit:15138 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15139 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15139);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction343___action[] = "parser::ReduceAction343::(parser::ReduceAction::action)";
+void parser___ReduceAction343___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15144;
+  fra.me.meth = LOCATE_parser___ReduceAction343___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15146 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15147 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15149 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLe, ID_parser___parser_nodes___TLe)) /*cast nullable TLe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15149);
+  }
+  /* parser/parser.nit:15150 */
+  fra.me.REG[3] = NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[3]);
+  /* parser/parser.nit:15153 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15154 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15154);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction344___action[] = "parser::ReduceAction344::(parser::ReduceAction::action)";
+void parser___ReduceAction344___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15159;
+  fra.me.meth = LOCATE_parser___ReduceAction344___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15161 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15162 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15164 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGe, ID_parser___parser_nodes___TGe)) /*cast nullable TGe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15164);
+  }
+  /* parser/parser.nit:15165 */
+  fra.me.REG[3] = NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[3]);
+  /* parser/parser.nit:15168 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15169 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15169);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction345___action[] = "parser::ReduceAction345::(parser::ReduceAction::action)";
+void parser___ReduceAction345___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15174;
+  fra.me.meth = LOCATE_parser___ReduceAction345___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15176 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15177 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15179 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLt, ID_parser___parser_nodes___TLt)) /*cast nullable TLt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15179);
+  }
+  /* parser/parser.nit:15180 */
+  fra.me.REG[3] = NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15183 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15184 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15184);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction346___action[] = "parser::ReduceAction346::(parser::ReduceAction::action)";
+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 = 15189;
+  fra.me.meth = LOCATE_parser___ReduceAction346___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15191 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15192 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15194 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGt, ID_parser___parser_nodes___TGt)) /*cast nullable TGt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15194);
+  }
+  /* parser/parser.nit:15195 */
+  fra.me.REG[3] = NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15198 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15199 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15199);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction347___action[] = "parser::ReduceAction347::(parser::ReduceAction::action)";
+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 = 15204;
+  fra.me.meth = LOCATE_parser___ReduceAction347___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15206 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15207 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15209 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLl, ID_parser___parser_nodes___TLl)) /*cast nullable TLl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15209);
+  }
+  /* parser/parser.nit:15210 */
+  fra.me.REG[3] = NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15213 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15214 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15214);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction348___action[] = "parser::ReduceAction348::(parser::ReduceAction::action)";
+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 = 15219;
+  fra.me.meth = LOCATE_parser___ReduceAction348___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15221 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15222 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15224 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGg, ID_parser___parser_nodes___TGg)) /*cast nullable TGg*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15224);
+  }
+  /* parser/parser.nit:15225 */
+  fra.me.REG[3] = NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15228 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15229 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15229);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction349___action[] = "parser::ReduceAction349::(parser::ReduceAction::action)";
+void parser___ReduceAction349___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15234;
+  fra.me.meth = LOCATE_parser___ReduceAction349___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15236 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15237 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15238 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15240 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15240);
+  }
+  /* parser/parser.nit:15242 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15242);
+  }
+  /* parser/parser.nit:15243 */
+  fra.me.REG[3] = NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15247 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15248 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15248);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction350___action[] = "parser::ReduceAction350::(parser::ReduceAction::action)";
+void parser___ReduceAction350___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15253;
+  fra.me.meth = LOCATE_parser___ReduceAction350___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15255 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15256 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15258 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStarship, ID_parser___parser_nodes___TStarship)) /*cast nullable TStarship*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15258);
+  }
+  /* parser/parser.nit:15259 */
+  fra.me.REG[3] = NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[3]);
+  /* parser/parser.nit:15262 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15263 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15263);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction351___action[] = "parser::ReduceAction351::(parser::ReduceAction::action)";
+void parser___ReduceAction351___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15268;
+  fra.me.meth = LOCATE_parser___ReduceAction351___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15270 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15271 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15272 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15274 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15274);
+  }
+  /* parser/parser.nit:15276 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15276);
+  }
+  /* parser/parser.nit:15277 */
+  fra.me.REG[3] = NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15281 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15282 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15282);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction352___action[] = "parser::ReduceAction352::(parser::ReduceAction::action)";
+void parser___ReduceAction352___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15287;
+  fra.me.meth = LOCATE_parser___ReduceAction352___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15289 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15290 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15291 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15292 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15294 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15294);
+  }
+  /* parser/parser.nit:15296 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15296);
+  }
+  /* parser/parser.nit:15298 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15298);
+  }
+  /* parser/parser.nit:15299 */
+  fra.me.REG[3] = NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15304 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15305 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15305);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction353___action[] = "parser::ReduceAction353::(parser::ReduceAction::action)";
+void parser___ReduceAction353___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15310;
+  fra.me.meth = LOCATE_parser___ReduceAction353___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15312 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15313 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15314 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15315 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15316 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15317 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15318 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15319 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15321 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15321);
+  }
+  /* parser/parser.nit:15323 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15323);
+  }
+  /* parser/parser.nit:15325 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15325);
+  }
+  /* parser/parser.nit:15326 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser.nit:15333 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:15334 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15334);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction354___action[] = "parser::ReduceAction354::(parser::ReduceAction::action)";
+void parser___ReduceAction354___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15339;
+  fra.me.meth = LOCATE_parser___ReduceAction354___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15341 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15342 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15343 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15344 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15345 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15346 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15347 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15348 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15349 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15351 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15351);
+  }
+  /* parser/parser.nit:15353 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15353);
+  }
+  /* parser/parser.nit:15354 */
+  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:15356 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15356);
+  }
+  /* parser/parser.nit:15358 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15358);
+  }
+  /* parser/parser.nit:15359 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8]);
+  /* parser/parser.nit:15366 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:15367 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15367);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction355___action[] = "parser::ReduceAction355::(parser::ReduceAction::action)";
+void parser___ReduceAction355___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15372;
+  fra.me.meth = LOCATE_parser___ReduceAction355___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15374 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15375 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15376 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15377 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15378 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15379 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15380 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15381 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15382 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15384 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15384);
+  }
+  /* parser/parser.nit:15386 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15386);
+  }
+  /* parser/parser.nit:15388 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15388);
+  }
+  /* parser/parser.nit:15390 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15390);
+  }
+  /* parser/parser.nit:15391 */
+  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:15392 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8]);
+  /* parser/parser.nit:15399 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:15400 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15400);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction356___action[] = "parser::ReduceAction356::(parser::ReduceAction::action)";
+void parser___ReduceAction356___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15405;
+  fra.me.meth = LOCATE_parser___ReduceAction356___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15407 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15408 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15409 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15410 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15411 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15412 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15413 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15414 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15415 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15416 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15418 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15418);
+  }
+  /* parser/parser.nit:15420 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15420);
+  }
+  /* parser/parser.nit:15421 */
+  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:15423 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15423);
+  }
+  /* parser/parser.nit:15425 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15425);
+  }
+  /* parser/parser.nit:15427 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15427);
+  }
+  /* parser/parser.nit:15428 */
+  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:15429 */
+  fra.me.REG[9] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9]);
+  /* parser/parser.nit:15436 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:15437 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15437);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction357___action[] = "parser::ReduceAction357::(parser::ReduceAction::action)";
+void parser___ReduceAction357___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15442;
+  fra.me.meth = LOCATE_parser___ReduceAction357___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15444 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15445 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15446 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15447 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15448 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15449 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15450 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15452 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15452);
+  }
+  /* parser/parser.nit:15454 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15454);
+  }
+  /* parser/parser.nit:15455 */
+  fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[6]);
+  /* parser/parser.nit:15462 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:15463 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15463);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction358___action[] = "parser::ReduceAction358::(parser::ReduceAction::action)";
+void parser___ReduceAction358___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15468;
+  fra.me.meth = LOCATE_parser___ReduceAction358___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15470 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15471 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15472 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15473 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15474 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15475 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15476 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15477 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15479 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15479);
+  }
+  /* parser/parser.nit:15481 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15481);
+  }
+  /* parser/parser.nit:15482 */
+  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:15484 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15484);
+  }
+  /* parser/parser.nit:15485 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3], NIT_NULL, fra.me.REG[7]);
+  /* parser/parser.nit:15492 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:15493 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15493);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction359___action[] = "parser::ReduceAction359::(parser::ReduceAction::action)";
+void parser___ReduceAction359___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15498;
+  fra.me.meth = LOCATE_parser___ReduceAction359___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15500 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15501 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15502 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15503 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15504 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15505 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15506 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15507 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15509 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15509);
+  }
+  /* parser/parser.nit:15511 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15511);
+  }
+  /* parser/parser.nit:15513 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15513);
+  }
+  /* parser/parser.nit:15514 */
+  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:15515 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], NIT_NULL, fra.me.REG[7]);
+  /* parser/parser.nit:15522 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:15523 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15523);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction360___action[] = "parser::ReduceAction360::(parser::ReduceAction::action)";
+void parser___ReduceAction360___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 = 15528;
+  fra.me.meth = LOCATE_parser___ReduceAction360___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15530 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15531 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15532 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15533 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15534 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15535 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15536 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15537 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15538 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15540 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15540);
+  }
+  /* parser/parser.nit:15542 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15542);
+  }
+  /* parser/parser.nit:15543 */
+  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:15545 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15545);
+  }
+  /* parser/parser.nit:15547 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15547);
+  }
+  /* parser/parser.nit:15548 */
+  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:15549 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], NIT_NULL, fra.me.REG[8]);
+  /* parser/parser.nit:15556 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:15557 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15557);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction361___action[] = "parser::ReduceAction361::(parser::ReduceAction::action)";
+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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15562;
+  fra.me.meth = LOCATE_parser___ReduceAction361___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15564 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15565 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15566 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15567 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15568 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15570 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15570);
+  }
+  /* parser/parser.nit:15571 */
+  fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:15578 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15579 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15579);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction362___action[] = "parser::ReduceAction362::(parser::ReduceAction::action)";
+void parser___ReduceAction362___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 = 15584;
+  fra.me.meth = LOCATE_parser___ReduceAction362___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15586 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15587 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15588 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15589 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15590 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15591 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15593 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15593);
+  }
+  /* parser/parser.nit:15595 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15595);
+  }
+  /* parser/parser.nit:15596 */
+  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:15597 */
+  fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:15604 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:15605 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15605);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction363___action[] = "parser::ReduceAction363::(parser::ReduceAction::action)";
+void parser___ReduceAction363___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 = 15610;
+  fra.me.meth = LOCATE_parser___ReduceAction363___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15612 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15613 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15614 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15615 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15616 */
+  fra.me.REG[4] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
+  /* parser/parser.nit:15623 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15624 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15624);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction364___action[] = "parser::ReduceAction364::(parser::ReduceAction::action)";
+void parser___ReduceAction364___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 = 15629;
+  fra.me.meth = LOCATE_parser___ReduceAction364___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15631 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15632 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15633 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15634 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15635 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15637 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15637);
+  }
+  /* parser/parser.nit:15638 */
+  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:15639 */
+  fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[5]);
+  /* parser/parser.nit:15646 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15647 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15647);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction365___action[] = "parser::ReduceAction365::(parser::ReduceAction::action)";
+void parser___ReduceAction365___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 = 15652;
+  fra.me.meth = LOCATE_parser___ReduceAction365___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15654 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15655 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15656 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15657 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15658 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15659 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15661 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15661);
+  }
+  /* parser/parser.nit:15663 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15663);
+  }
+  /* parser/parser.nit:15664 */
+  fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[6]);
+  /* parser/parser.nit:15671 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:15672 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15672);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction366___action[] = "parser::ReduceAction366::(parser::ReduceAction::action)";
+void parser___ReduceAction366___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15677;
+  fra.me.meth = LOCATE_parser___ReduceAction366___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15679 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15680 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15681 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15682 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15683 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15684 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15685 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15687 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15687);
+  }
+  /* parser/parser.nit:15689 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15689);
+  }
+  /* parser/parser.nit:15690 */
+  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:15692 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15692);
+  }
+  /* parser/parser.nit:15693 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3], NIT_NULL, fra.me.REG[7]);
+  /* parser/parser.nit:15700 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:15701 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15701);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction367___action[] = "parser::ReduceAction367::(parser::ReduceAction::action)";
+void parser___ReduceAction367___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15706;
+  fra.me.meth = LOCATE_parser___ReduceAction367___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15708 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15709 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15710 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15711 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15712 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15713 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15714 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15716 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15716);
+  }
+  /* parser/parser.nit:15718 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15718);
+  }
+  /* parser/parser.nit:15720 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15720);
+  }
+  /* parser/parser.nit:15721 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser.nit:15728 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:15729 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15729);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction368___action[] = "parser::ReduceAction368::(parser::ReduceAction::action)";
+void parser___ReduceAction368___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15734;
+  fra.me.meth = LOCATE_parser___ReduceAction368___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15736 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15737 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15738 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15739 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15740 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15741 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15742 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15743 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15745 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15745);
+  }
+  /* parser/parser.nit:15747 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15747);
+  }
+  /* parser/parser.nit:15748 */
+  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:15750 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15750);
+  }
+  /* parser/parser.nit:15752 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15752);
+  }
+  /* parser/parser.nit:15753 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8]);
+  /* parser/parser.nit:15760 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:15761 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15761);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction369___action[] = "parser::ReduceAction369::(parser::ReduceAction::action)";
+void parser___ReduceAction369___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15766;
+  fra.me.meth = LOCATE_parser___ReduceAction369___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15768 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15769 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15770 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15771 */
+  fra.me.REG[4] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
+  /* parser/parser.nit:15778 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15779 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15779);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction370___action[] = "parser::ReduceAction370::(parser::ReduceAction::action)";
+void parser___ReduceAction370___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15784;
+  fra.me.meth = LOCATE_parser___ReduceAction370___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15786 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15787 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15788 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15789 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15791 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15791);
+  }
+  /* parser/parser.nit:15792 */
+  fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:15799 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15800 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15800);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction371___action[] = "parser::ReduceAction371::(parser::ReduceAction::action)";
+void parser___ReduceAction371___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15805;
+  fra.me.meth = LOCATE_parser___ReduceAction371___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15807 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15808 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15809 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15810 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15812 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15813 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:15815 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15816 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15816);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction372___action[] = "parser::ReduceAction372::(parser::ReduceAction::action)";
+void parser___ReduceAction372___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15821;
+  fra.me.meth = LOCATE_parser___ReduceAction372___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15823 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15824 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15825 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15826 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15827 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15830 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15830);
+  }
+  /* parser/parser.nit:15831 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15832 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:15834 */
+  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:15835 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15836 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15836);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction373___action[] = "parser::ReduceAction373::(parser::ReduceAction::action)";
+void parser___ReduceAction373___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15841;
+  fra.me.meth = LOCATE_parser___ReduceAction373___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15843 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15844 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15845 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15846 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15848 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15849 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15849);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction374___action[] = "parser::ReduceAction374::(parser::ReduceAction::action)";
+void parser___ReduceAction374___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15854;
+  fra.me.meth = LOCATE_parser___ReduceAction374___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15856 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15857 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15859 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15859);
+  }
+  /* parser/parser.nit:15860 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:15866 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15867 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15867);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction375___action[] = "parser::ReduceAction375::(parser::ReduceAction::action)";
+void parser___ReduceAction375___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15872;
+  fra.me.meth = LOCATE_parser___ReduceAction375___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15874 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15875 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15876 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15878 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15878);
+  }
+  /* parser/parser.nit:15880 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15880);
+  }
+  /* parser/parser.nit:15881 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:15887 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15888 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15888);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction376___action[] = "parser::ReduceAction376::(parser::ReduceAction::action)";
+void parser___ReduceAction376___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15893;
+  fra.me.meth = LOCATE_parser___ReduceAction376___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15895 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15896 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15897 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15899 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15899);
+  }
+  /* parser/parser.nit:15901 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15901);
+  }
+  /* parser/parser.nit:15902 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:15908 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15909 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15909);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction377___action[] = "parser::ReduceAction377::(parser::ReduceAction::action)";
+void parser___ReduceAction377___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15914;
+  fra.me.meth = LOCATE_parser___ReduceAction377___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15916 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15917 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15918 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15919 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15921 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15921);
+  }
+  /* parser/parser.nit:15923 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15923);
+  }
+  /* parser/parser.nit:15925 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15925);
+  }
+  /* parser/parser.nit:15926 */
+  fra.me.REG[4] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[4]);
+  /* parser/parser.nit:15932 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15933 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15933);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction378___action[] = "parser::ReduceAction378::(parser::ReduceAction::action)";
+void parser___ReduceAction378___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15938;
+  fra.me.meth = LOCATE_parser___ReduceAction378___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15940 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15941 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15942 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15943 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15945 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15945);
+  }
+  /* parser/parser.nit:15947 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15947);
+  }
+  /* parser/parser.nit:15949 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast nullable TDotdotdot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15949);
+  }
+  /* parser/parser.nit:15950 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:15956 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15957 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15957);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction379___action[] = "parser::ReduceAction379::(parser::ReduceAction::action)";
+void parser___ReduceAction379___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15962;
+  fra.me.meth = LOCATE_parser___ReduceAction379___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15964 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15965 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15966 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15967 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15968 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15970 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15970);
+  }
+  /* parser/parser.nit:15972 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15972);
+  }
+  /* parser/parser.nit:15974 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast nullable TDotdotdot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15974);
+  }
+  /* parser/parser.nit:15976 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15976);
+  }
+  /* parser/parser.nit:15977 */
+  fra.me.REG[5] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:15983 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15984 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15984);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction380___action[] = "parser::ReduceAction380::(parser::ReduceAction::action)";
+void parser___ReduceAction380___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 15989;
+  fra.me.meth = LOCATE_parser___ReduceAction380___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15991 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15992 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15993 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15995 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15995);
+  }
+  /* parser/parser.nit:15996 */
+  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:15997 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15998 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15998);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction381___action[] = "parser::ReduceAction381::(parser::ReduceAction::action)";
+void parser___ReduceAction381___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16003;
+  fra.me.meth = LOCATE_parser___ReduceAction381___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16005 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16006 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16007 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16008 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16009 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16011 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16011);
+  }
+  /* parser/parser.nit:16013 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16013);
+  }
+  /* parser/parser.nit:16015 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16015);
+  }
+  /* parser/parser.nit:16016 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:16023 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16024 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16024);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction382___action[] = "parser::ReduceAction382::(parser::ReduceAction::action)";
+void parser___ReduceAction382___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16029;
+  fra.me.meth = LOCATE_parser___ReduceAction382___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16031 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16032 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16033 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16034 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16035 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16036 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16038 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16038);
+  }
+  /* parser/parser.nit:16040 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16040);
+  }
+  /* parser/parser.nit:16042 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16042);
+  }
+  /* parser/parser.nit:16044 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16044);
+  }
+  /* parser/parser.nit:16045 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:16052 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16053 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16053);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction383___action[] = "parser::ReduceAction383::(parser::ReduceAction::action)";
+void parser___ReduceAction383___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16058;
+  fra.me.meth = LOCATE_parser___ReduceAction383___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16060 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16061 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16062 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16063 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16064 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16065 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16066 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16068 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16068);
+  }
+  /* parser/parser.nit:16070 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16070);
+  }
+  /* parser/parser.nit:16072 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16072);
+  }
+  /* parser/parser.nit:16074 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16074);
+  }
+  /* parser/parser.nit:16075 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16082 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16083 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16083);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction384___action[] = "parser::ReduceAction384::(parser::ReduceAction::action)";
+void parser___ReduceAction384___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16088;
+  fra.me.meth = LOCATE_parser___ReduceAction384___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16090 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16091 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16092 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16093 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16094 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16095 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16096 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16097 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16099 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16099);
+  }
+  /* parser/parser.nit:16101 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16101);
+  }
+  /* parser/parser.nit:16103 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16103);
+  }
+  /* parser/parser.nit:16105 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16105);
+  }
+  /* parser/parser.nit:16107 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16107);
+  }
+  /* parser/parser.nit:16108 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16115 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16116 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16116);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction385___action[] = "parser::ReduceAction385::(parser::ReduceAction::action)";
+void parser___ReduceAction385___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16121;
+  fra.me.meth = LOCATE_parser___ReduceAction385___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16123 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16124 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16125 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16126 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16127 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16128 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16129 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16130 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16132 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16132);
+  }
+  /* parser/parser.nit:16134 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16134);
+  }
+  /* parser/parser.nit:16136 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16136);
+  }
+  /* parser/parser.nit:16138 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16138);
+  }
+  /* parser/parser.nit:16139 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16146 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16147 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16147);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction386___action[] = "parser::ReduceAction386::(parser::ReduceAction::action)";
+void parser___ReduceAction386___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16152;
+  fra.me.meth = LOCATE_parser___ReduceAction386___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16154 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16155 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16156 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16157 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16158 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16159 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16160 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16161 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16162 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16164 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16164);
+  }
+  /* parser/parser.nit:16166 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16166);
+  }
+  /* parser/parser.nit:16168 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16168);
+  }
+  /* parser/parser.nit:16170 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16170);
+  }
+  /* parser/parser.nit:16172 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16172);
+  }
+  /* parser/parser.nit:16173 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16180 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16181 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16181);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction387___action[] = "parser::ReduceAction387::(parser::ReduceAction::action)";
+void parser___ReduceAction387___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16186;
+  fra.me.meth = LOCATE_parser___ReduceAction387___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16188 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16189 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16191 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16191);
+  }
+  /* parser/parser.nit:16192 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:16196 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16197 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16197);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction388___action[] = "parser::ReduceAction388::(parser::ReduceAction::action)";
+void parser___ReduceAction388___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16202;
+  fra.me.meth = LOCATE_parser___ReduceAction388___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16204 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16205 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16206 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16207 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16208 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16210 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16210);
+  }
+  /* parser/parser.nit:16212 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast nullable AExternCall*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16212);
+  }
+  /* parser/parser.nit:16213 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16214 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16216 */
+  fra.me.REG[5] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[4], fra.me.REG[5]);
+  /* parser/parser.nit:16220 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16221 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16221);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction389___action[] = "parser::ReduceAction389::(parser::ReduceAction::action)";
+void parser___ReduceAction389___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16226;
+  fra.me.meth = LOCATE_parser___ReduceAction389___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16228 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16229 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16230 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16231 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16232 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16233 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16235 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16235);
+  }
+  /* parser/parser.nit:16237 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast nullable AExternCall*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16237);
+  }
+  /* parser/parser.nit:16239 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16239);
+  }
+  /* parser/parser.nit:16240 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16241 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:16243 */
+  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:16244 */
+  fra.me.REG[6] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:16248 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:16249 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16249);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction390___action[] = "parser::ReduceAction390::(parser::ReduceAction::action)";
+void parser___ReduceAction390___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16254;
+  fra.me.meth = LOCATE_parser___ReduceAction390___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16256 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16257 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16258 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16259 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16261 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16262 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16262);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction391___action[] = "parser::ReduceAction391::(parser::ReduceAction::action)";
+void parser___ReduceAction391___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16267;
+  fra.me.meth = LOCATE_parser___ReduceAction391___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16269 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16270 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16272 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16273 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16273);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction393___action[] = "parser::ReduceAction393::(parser::ReduceAction::action)";
+void parser___ReduceAction393___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16278;
+  fra.me.meth = LOCATE_parser___ReduceAction393___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16280 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16281 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16283 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16283);
+  }
+  /* parser/parser.nit:16284 */
+  fra.me.REG[3] = NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[3]);
+  /* parser/parser.nit:16287 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16288 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16288);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction394___action[] = "parser::ReduceAction394::(parser::ReduceAction::action)";
+void parser___ReduceAction394___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16293;
+  fra.me.meth = LOCATE_parser___ReduceAction394___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16295 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16296 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16298 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16298);
+  }
+  /* parser/parser.nit:16299 */
+  fra.me.REG[3] = NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[3]);
+  /* parser/parser.nit:16302 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16303 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16303);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction395___action[] = "parser::ReduceAction395::(parser::ReduceAction::action)";
+void parser___ReduceAction395___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16308;
+  fra.me.meth = LOCATE_parser___ReduceAction395___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16310 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16311 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16312 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16313 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16315 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16315);
+  }
+  /* parser/parser.nit:16317 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16317);
+  }
+  /* parser/parser.nit:16319 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16319);
+  }
+  /* parser/parser.nit:16320 */
+  fra.me.REG[3] = NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16325 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16326 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16326);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction396___action[] = "parser::ReduceAction396::(parser::ReduceAction::action)";
+void parser___ReduceAction396___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16331;
+  fra.me.meth = LOCATE_parser___ReduceAction396___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16333 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16334 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16336 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16336);
+  }
+  /* parser/parser.nit:16337 */
+  fra.me.REG[3] = NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[3]);
+  /* parser/parser.nit:16340 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16341 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16341);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction397___action[] = "parser::ReduceAction397::(parser::ReduceAction::action)";
+void parser___ReduceAction397___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16346;
+  fra.me.meth = LOCATE_parser___ReduceAction397___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16348 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16349 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16350 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16351 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16352 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16353 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16354 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16355 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16356 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16358 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16358);
+  }
+  /* parser/parser.nit:16360 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16360);
+  }
+  /* parser/parser.nit:16362 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16362);
+  }
+  /* parser/parser.nit:16363 */
+  fra.me.REG[3] = NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16368 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16369 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16369);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction398___action[] = "parser::ReduceAction398::(parser::ReduceAction::action)";
+void parser___ReduceAction398___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16374;
+  fra.me.meth = LOCATE_parser___ReduceAction398___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16376 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16377 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16378 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16379 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16380 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16382 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16382);
+  }
+  /* parser/parser.nit:16384 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16384);
+  }
+  /* parser/parser.nit:16386 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16386);
+  }
+  /* parser/parser.nit:16387 */
+  fra.me.REG[3] = NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16392 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16393 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16393);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction399___action[] = "parser::ReduceAction399::(parser::ReduceAction::action)";
+void parser___ReduceAction399___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16398;
+  fra.me.meth = LOCATE_parser___ReduceAction399___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16400 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16401 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16402 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16403 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16404 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16405 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16406 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16408 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16408);
+  }
+  /* parser/parser.nit:16410 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16410);
+  }
+  /* parser/parser.nit:16412 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16412);
+  }
+  /* parser/parser.nit:16414 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16414);
+  }
+  /* parser/parser.nit:16415 */
+  fra.me.REG[3] = NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16421 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16422 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16422);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction400___action[] = "parser::ReduceAction400::(parser::ReduceAction::action)";
+void parser___ReduceAction400___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16427;
+  fra.me.meth = LOCATE_parser___ReduceAction400___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16429 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16430 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16433 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwin, ID_parser___parser_nodes___TKwin)) /*cast nullable TKwin*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16433);
+  }
+  /* parser/parser.nit:16435 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16435);
+  }
+  /* parser/parser.nit:16436 */
+  fra.me.REG[3] = NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16440 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16441 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16441);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction401___action[] = "parser::ReduceAction401::(parser::ReduceAction::action)";
+void parser___ReduceAction401___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16446;
+  fra.me.meth = LOCATE_parser___ReduceAction401___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16448 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16449 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16451 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast nullable TExternCodeSegment*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16451);
+  }
+  /* parser/parser.nit:16452 */
+  fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:16456 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16457 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16457);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction402___action[] = "parser::ReduceAction402::(parser::ReduceAction::action)";
+void parser___ReduceAction402___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16462;
+  fra.me.meth = LOCATE_parser___ReduceAction402___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16464 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16465 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16466 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16468 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AInLanguage, ID_parser___parser_nodes___AInLanguage)) /*cast nullable AInLanguage*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16468);
+  }
+  /* parser/parser.nit:16470 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast nullable TExternCodeSegment*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16470);
+  }
+  /* parser/parser.nit:16471 */
+  fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16475 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16476 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16476);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction403___action[] = "parser::ReduceAction403::(parser::ReduceAction::action)";
+void parser___ReduceAction403___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16481;
+  fra.me.meth = LOCATE_parser___ReduceAction403___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16483 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16484 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16485 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16487 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16488 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16488);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction404___action[] = "parser::ReduceAction404::(parser::ReduceAction::action)";
+void parser___ReduceAction404___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16493;
+  fra.me.meth = LOCATE_parser___ReduceAction404___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16495 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16496 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16497 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16499 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16499);
+  }
+  /* parser/parser.nit:16500 */
+  fra.me.REG[4] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[3], fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:16506 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16507 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16507);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction405___action[] = "parser::ReduceAction405::(parser::ReduceAction::action)";
+void parser___ReduceAction405___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16512;
+  fra.me.meth = LOCATE_parser___ReduceAction405___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16514 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16515 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16516 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16517 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16519 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16519);
+  }
+  /* parser/parser.nit:16521 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16521);
+  }
+  /* parser/parser.nit:16522 */
+  fra.me.REG[5] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:16528 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16529 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16529);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction406___action[] = "parser::ReduceAction406::(parser::ReduceAction::action)";
+void parser___ReduceAction406___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16534;
+  fra.me.meth = LOCATE_parser___ReduceAction406___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16536 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16537 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16538 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16539 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16541 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16541);
+  }
+  /* parser/parser.nit:16543 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16543);
+  }
+  /* parser/parser.nit:16544 */
+  fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:16550 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16551 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16551);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction407___action[] = "parser::ReduceAction407::(parser::ReduceAction::action)";
+void parser___ReduceAction407___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16556;
+  fra.me.meth = LOCATE_parser___ReduceAction407___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16558 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16559 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16560 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16561 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16562 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16564 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16564);
+  }
+  /* parser/parser.nit:16566 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16566);
+  }
+  /* parser/parser.nit:16568 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16568);
+  }
+  /* parser/parser.nit:16569 */
+  fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:16575 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16576 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16576);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction408___action[] = "parser::ReduceAction408::(parser::ReduceAction::action)";
+void parser___ReduceAction408___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16581;
+  fra.me.meth = LOCATE_parser___ReduceAction408___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16583 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16584 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16585 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16586 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16587 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16588 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16589 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16590 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16592 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16592);
+  }
+  /* parser/parser.nit:16594 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16594);
+  }
+  /* parser/parser.nit:16595 */
+  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:16596 */
+  fra.me.REG[5] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:16602 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16603 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16603);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction409___action[] = "parser::ReduceAction409::(parser::ReduceAction::action)";
+void parser___ReduceAction409___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16608;
+  fra.me.meth = LOCATE_parser___ReduceAction409___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16610 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16611 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16612 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16613 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16614 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16615 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16616 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16617 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16618 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16620 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16620);
+  }
+  /* parser/parser.nit:16622 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16622);
+  }
+  /* parser/parser.nit:16624 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16624);
+  }
+  /* parser/parser.nit:16625 */
+  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:16626 */
+  fra.me.REG[6] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:16632 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:16633 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16633);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction410___action[] = "parser::ReduceAction410::(parser::ReduceAction::action)";
+void parser___ReduceAction410___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16638;
+  fra.me.meth = LOCATE_parser___ReduceAction410___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16640 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16641 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16642 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16643 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16644 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16645 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16646 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16647 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16648 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16650 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16650);
+  }
+  /* parser/parser.nit:16652 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16652);
+  }
+  /* parser/parser.nit:16653 */
+  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:16655 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16655);
+  }
+  /* parser/parser.nit:16656 */
+  fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:16662 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16663 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16663);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction411___action[] = "parser::ReduceAction411::(parser::ReduceAction::action)";
+void parser___ReduceAction411___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16668;
+  fra.me.meth = LOCATE_parser___ReduceAction411___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16670 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16671 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16672 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16673 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16674 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16675 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16676 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16677 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16678 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16679 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16681 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16681);
+  }
+  /* parser/parser.nit:16683 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16683);
+  }
+  /* parser/parser.nit:16685 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16685);
+  }
+  /* parser/parser.nit:16686 */
+  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:16688 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16688);
+  }
+  /* parser/parser.nit:16689 */
+  fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3]);
+  /* parser/parser.nit:16695 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16696 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16696);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction412___action[] = "parser::ReduceAction412::(parser::ReduceAction::action)";
+void parser___ReduceAction412___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16701;
+  fra.me.meth = LOCATE_parser___ReduceAction412___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16703 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16704 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16705 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16707 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16708 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16710 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16711 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16711);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction413___action[] = "parser::ReduceAction413::(parser::ReduceAction::action)";
+void parser___ReduceAction413___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16716;
+  fra.me.meth = LOCATE_parser___ReduceAction413___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16718 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16719 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16720 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16721 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16724 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16724);
+  }
+  /* parser/parser.nit:16725 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16726 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:16728 */
+  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:16729 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16730 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16730);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction414___action[] = "parser::ReduceAction414::(parser::ReduceAction::action)";
+void parser___ReduceAction414___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16735;
+  fra.me.meth = LOCATE_parser___ReduceAction414___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16737 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16738 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16739 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16740 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16742 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16743 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16743);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction416___action[] = "parser::ReduceAction416::(parser::ReduceAction::action)";
+void parser___ReduceAction416___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16748;
+  fra.me.meth = LOCATE_parser___ReduceAction416___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16750 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16751 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16752 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16754 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16755 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16755);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction417___action[] = "parser::ReduceAction417::(parser::ReduceAction::action)";
+void parser___ReduceAction417___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16760;
+  fra.me.meth = LOCATE_parser___ReduceAction417___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16762 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16763 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16764 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16765 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16767 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16767);
+  }
+  /* parser/parser.nit:16768 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16772 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16773 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16773);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction418___action[] = "parser::ReduceAction418::(parser::ReduceAction::action)";
+void parser___ReduceAction418___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16778;
+  fra.me.meth = LOCATE_parser___ReduceAction418___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16780 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16781 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16782 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16784 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16784);
+  }
+  /* parser/parser.nit:16785 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16789 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16790 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16790);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction419___action[] = "parser::ReduceAction419::(parser::ReduceAction::action)";
+void parser___ReduceAction419___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 = 16795;
+  fra.me.meth = LOCATE_parser___ReduceAction419___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16797 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16798 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16800 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16801 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16801);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction420___action[] = "parser::ReduceAction420::(parser::ReduceAction::action)";
+void parser___ReduceAction420___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 = 16806;
+  fra.me.meth = LOCATE_parser___ReduceAction420___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16808 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16809 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16810 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16812 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16812);
+  }
+  /* parser/parser.nit:16813 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16814 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16816 */
+  fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:16820 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16821 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16821);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction421___action[] = "parser::ReduceAction421::(parser::ReduceAction::action)";
+void parser___ReduceAction421___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16826;
+  fra.me.meth = LOCATE_parser___ReduceAction421___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16828 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16829 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16830 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16831 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16833 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16833);
+  }
+  /* parser/parser.nit:16835 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16835);
+  }
+  /* parser/parser.nit:16836 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16837 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:16839 */
+  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:16840 */
+  fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:16844 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16845 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16845);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction422___action[] = "parser::ReduceAction422::(parser::ReduceAction::action)";
+void parser___ReduceAction422___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16850;
+  fra.me.meth = LOCATE_parser___ReduceAction422___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16852 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16853 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16854 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16855 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16857 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16857);
+  }
+  /* parser/parser.nit:16858 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16859 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16861 */
+  fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:16865 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16866 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16866);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction423___action[] = "parser::ReduceAction423::(parser::ReduceAction::action)";
+void parser___ReduceAction423___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16871;
+  fra.me.meth = LOCATE_parser___ReduceAction423___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16873 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16874 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16875 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16876 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16877 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16879 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16879);
+  }
+  /* parser/parser.nit:16881 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16881);
+  }
+  /* parser/parser.nit:16882 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16883 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:16885 */
+  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:16886 */
+  fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:16890 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16891 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16891);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction424___action[] = "parser::ReduceAction424::(parser::ReduceAction::action)";
+void parser___ReduceAction424___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16896;
+  fra.me.meth = LOCATE_parser___ReduceAction424___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16898 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16899 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16900 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16901 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16902 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16904 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16904);
+  }
+  /* parser/parser.nit:16905 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16906 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:16909 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16909);
+  }
+  /* parser/parser.nit:16910 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:16914 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16915 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16915);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction425___action[] = "parser::ReduceAction425::(parser::ReduceAction::action)";
+void parser___ReduceAction425___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16920;
+  fra.me.meth = LOCATE_parser___ReduceAction425___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16922 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16923 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16924 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16925 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16926 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16927 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16929 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16929);
+  }
+  /* parser/parser.nit:16931 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16931);
+  }
+  /* parser/parser.nit:16932 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16933 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:16935 */
+  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:16937 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16937);
+  }
+  /* parser/parser.nit:16938 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:16942 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16943 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16943);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction429___action[] = "parser::ReduceAction429::(parser::ReduceAction::action)";
+void parser___ReduceAction429___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16948;
+  fra.me.meth = LOCATE_parser___ReduceAction429___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16950 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16951 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16953 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast nullable TKwreturn*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16953);
+  }
+  /* parser/parser.nit:16954 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:16958 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16959 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16959);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction430___action[] = "parser::ReduceAction430::(parser::ReduceAction::action)";
+void parser___ReduceAction430___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16964;
+  fra.me.meth = LOCATE_parser___ReduceAction430___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16966 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16967 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16968 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16970 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast nullable TKwreturn*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16970);
+  }
+  /* parser/parser.nit:16972 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16972);
+  }
+  /* parser/parser.nit:16973 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16977 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16978 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16978);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction431___action[] = "parser::ReduceAction431::(parser::ReduceAction::action)";
+void parser___ReduceAction431___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 16983;
+  fra.me.meth = LOCATE_parser___ReduceAction431___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16985 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16986 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16988 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16988);
+  }
+  /* parser/parser.nit:16989 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:16994 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16995 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16995);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction432___action[] = "parser::ReduceAction432::(parser::ReduceAction::action)";
+void parser___ReduceAction432___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17000;
+  fra.me.meth = LOCATE_parser___ReduceAction432___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17002 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17003 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17004 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17006 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17006);
+  }
+  /* parser/parser.nit:17008 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17008);
+  }
+  /* parser/parser.nit:17009 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17014 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17015 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17015);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction433___action[] = "parser::ReduceAction433::(parser::ReduceAction::action)";
+void parser___ReduceAction433___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17020;
+  fra.me.meth = LOCATE_parser___ReduceAction433___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17022 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17023 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17024 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17026 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17026);
+  }
+  /* parser/parser.nit:17028 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17028);
+  }
+  /* parser/parser.nit:17029 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:17034 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17035 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17035);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction434___action[] = "parser::ReduceAction434::(parser::ReduceAction::action)";
+void parser___ReduceAction434___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 = 17040;
+  fra.me.meth = LOCATE_parser___ReduceAction434___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17042 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17043 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17044 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17045 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17047 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17047);
+  }
+  /* parser/parser.nit:17049 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17049);
+  }
+  /* parser/parser.nit:17051 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17051);
+  }
+  /* parser/parser.nit:17052 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17057 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17058 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17058);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction435___action[] = "parser::ReduceAction435::(parser::ReduceAction::action)";
+void parser___ReduceAction435___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 = 17063;
+  fra.me.meth = LOCATE_parser___ReduceAction435___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17065 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17066 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17068 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwabort, ID_parser___parser_nodes___TKwabort)) /*cast nullable TKwabort*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17068);
+  }
+  /* parser/parser.nit:17069 */
+  fra.me.REG[3] = NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[3]);
+  /* parser/parser.nit:17072 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17073 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17073);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction436___action[] = "parser::ReduceAction436::(parser::ReduceAction::action)";
+void parser___ReduceAction436___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 = 17078;
+  fra.me.meth = LOCATE_parser___ReduceAction436___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17080 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17081 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17083 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17083);
+  }
+  /* parser/parser.nit:17084 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:17089 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17090 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17090);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction437___action[] = "parser::ReduceAction437::(parser::ReduceAction::action)";
+void parser___ReduceAction437___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17095;
+  fra.me.meth = LOCATE_parser___ReduceAction437___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17097 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17098 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17099 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17101 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17101);
+  }
+  /* parser/parser.nit:17103 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17103);
+  }
+  /* parser/parser.nit:17104 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17109 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17110 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17110);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction438___action[] = "parser::ReduceAction438::(parser::ReduceAction::action)";
+void parser___ReduceAction438___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 = 17115;
+  fra.me.meth = LOCATE_parser___ReduceAction438___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17117 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17118 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17119 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17121 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17121);
+  }
+  /* parser/parser.nit:17123 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17123);
+  }
+  /* parser/parser.nit:17124 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:17129 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17130 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17130);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction439___action[] = "parser::ReduceAction439::(parser::ReduceAction::action)";
+void parser___ReduceAction439___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17135;
+  fra.me.meth = LOCATE_parser___ReduceAction439___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17137 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17138 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17139 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17140 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17142 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17142);
+  }
+  /* parser/parser.nit:17144 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17144);
+  }
+  /* parser/parser.nit:17146 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17146);
+  }
+  /* parser/parser.nit:17147 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17152 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17153 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17153);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction446___action[] = "parser::ReduceAction446::(parser::ReduceAction::action)";
+void parser___ReduceAction446___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 = 17158;
+  fra.me.meth = LOCATE_parser___ReduceAction446___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17160 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17161 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17162 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17163 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17164 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17165 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17166 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17168 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17168);
+  }
+  /* parser/parser.nit:17170 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17170);
+  }
+  /* parser/parser.nit:17172 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17172);
+  }
+  /* parser/parser.nit:17173 */
+  fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser.nit:17179 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:17180 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17180);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction447___action[] = "parser::ReduceAction447::(parser::ReduceAction::action)";
+void parser___ReduceAction447___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17185;
+  fra.me.meth = LOCATE_parser___ReduceAction447___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17187 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17188 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17189 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17190 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17191 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:17193 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17193);
+  }
+  /* parser/parser.nit:17195 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17195);
+  }
+  /* parser/parser.nit:17196 */
+  fra.me.REG[5] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:17202 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:17203 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17203);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction448___action[] = "parser::ReduceAction448::(parser::ReduceAction::action)";
+void parser___ReduceAction448___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17208;
+  fra.me.meth = LOCATE_parser___ReduceAction448___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17210 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17211 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17212 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17213 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17214 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17215 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17216 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17217 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17219 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17219);
+  }
+  /* parser/parser.nit:17221 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17221);
+  }
+  /* parser/parser.nit:17223 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17223);
+  }
+  /* parser/parser.nit:17225 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17225);
+  }
+  /* parser/parser.nit:17226 */
+  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:17227 */
+  fra.me.REG[7] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[7]);
+  /* parser/parser.nit:17233 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:17234 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17234);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction449___action[] = "parser::ReduceAction449::(parser::ReduceAction::action)";
+void parser___ReduceAction449___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17239;
+  fra.me.meth = LOCATE_parser___ReduceAction449___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17241 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17242 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17243 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17244 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17245 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17246 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:17248 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17248);
+  }
+  /* parser/parser.nit:17250 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17250);
+  }
+  /* parser/parser.nit:17252 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17252);
+  }
+  /* parser/parser.nit:17253 */
+  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:17254 */
+  fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:17260 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:17261 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17261);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction450___action[] = "parser::ReduceAction450::(parser::ReduceAction::action)";
+void parser___ReduceAction450___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 17266;
+  fra.me.meth = LOCATE_parser___ReduceAction450___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17268 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17269 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17270 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17272 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17272);
+  }
+  /* parser/parser.nit:17274 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17274);
+  }
+  /* parser/parser.nit:17275 */
+  fra.me.REG[3] = NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17280 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17281 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17281);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction451___action[] = "parser::ReduceAction451::(parser::ReduceAction::action)";
+void parser___ReduceAction451___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17286;
+  fra.me.meth = LOCATE_parser___ReduceAction451___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17288 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17289 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17290 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17291 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17293 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AQualified, ID_parser___parser_nodes___AQualified)) /*cast nullable AQualified*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17293);
+  }
+  /* parser/parser.nit:17295 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17295);
+  }
+  /* parser/parser.nit:17297 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17297);
+  }
+  /* parser/parser.nit:17298 */
+  fra.me.REG[3] = NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17303 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17304 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17304);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction452___action[] = "parser::ReduceAction452::(parser::ReduceAction::action)";
+void parser___ReduceAction452___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17309;
+  fra.me.meth = LOCATE_parser___ReduceAction452___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17311 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17312 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17313 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17314 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17315 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17316 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17318 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17318);
+  }
+  /* parser/parser.nit:17320 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17320);
+  }
+  /* parser/parser.nit:17322 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17322);
+  }
+  /* parser/parser.nit:17323 */
+  fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17328 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17329 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17329);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction453___action[] = "parser::ReduceAction453::(parser::ReduceAction::action)";
+void parser___ReduceAction453___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17334;
+  fra.me.meth = LOCATE_parser___ReduceAction453___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17336 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17337 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17338 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17339 */
+  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:17341 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17341);
+  }
+  /* parser/parser.nit:17343 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17343);
+  }
+  /* parser/parser.nit:17344 */
+  fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17349 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17350 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17350);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction454___action[] = "parser::ReduceAction454::(parser::ReduceAction::action)";
+void parser___ReduceAction454___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17355;
+  fra.me.meth = LOCATE_parser___ReduceAction454___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17357 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17358 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17359 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17360 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17361 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17362 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17364 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwdebug, ID_parser___parser_nodes___TKwdebug)) /*cast nullable TKwdebug*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17364);
+  }
+  /* parser/parser.nit:17366 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17366);
+  }
+  /* parser/parser.nit:17368 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17368);
+  }
+  /* parser/parser.nit:17370 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17370);
+  }
+  /* parser/parser.nit:17371 */
+  fra.me.REG[4] = NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:17377 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:17378 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17378);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction455___action[] = "parser::ReduceAction455::(parser::ReduceAction::action)";
+void parser___ReduceAction455___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 17383;
+  fra.me.meth = LOCATE_parser___ReduceAction455___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17385 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17386 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17387 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17389 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwlabel, ID_parser___parser_nodes___TKwlabel)) /*cast nullable TKwlabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17389);
+  }
+  /* parser/parser.nit:17391 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17391);
+  }
+  /* parser/parser.nit:17392 */
+  fra.me.REG[3] = NEW_ALabel_parser___parser_prod___ALabel___init_alabel(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17396 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17397 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17397);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction456___action[] = "parser::ReduceAction456::(parser::ReduceAction::action)";
+void parser___ReduceAction456___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 17402;
+  fra.me.meth = LOCATE_parser___ReduceAction456___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17404 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17405 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17406 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17408 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:17409 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:17411 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:17412 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17412);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction457___action[] = "parser::ReduceAction457::(parser::ReduceAction::action)";
+void parser___ReduceAction457___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17417;
+  fra.me.meth = LOCATE_parser___ReduceAction457___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17419 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17420 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17421 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17422 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17425 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17425);
+  }
+  /* parser/parser.nit:17426 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:17427 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:17429 */
+  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:17430 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:17431 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17431);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction458___action[] = "parser::ReduceAction458::(parser::ReduceAction::action)";
+void parser___ReduceAction458___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 = 17436;
+  fra.me.meth = LOCATE_parser___ReduceAction458___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17438 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17439 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17440 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17441 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17442 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17443 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17444 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17446 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17446);
+  }
+  /* parser/parser.nit:17448 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17448);
+  }
+  /* parser/parser.nit:17450 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17450);
+  }
+  /* parser/parser.nit:17452 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17452);
+  }
+  /* parser/parser.nit:17454 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17454);
+  }
+  /* parser/parser.nit:17455 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17463 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17464 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17464);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction459___action[] = "parser::ReduceAction459::(parser::ReduceAction::action)";
+void parser___ReduceAction459___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17469;
+  fra.me.meth = LOCATE_parser___ReduceAction459___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17471 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17472 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17473 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17474 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17475 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17476 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17477 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17478 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17479 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17480 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17482 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17482);
+  }
+  /* parser/parser.nit:17484 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17484);
+  }
+  /* parser/parser.nit:17486 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17486);
+  }
+  /* parser/parser.nit:17487 */
+  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:17489 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17489);
+  }
+  /* parser/parser.nit:17491 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17491);
+  }
+  /* parser/parser.nit:17493 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17493);
+  }
+  /* parser/parser.nit:17494 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17502 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17503 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17503);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction460___action[] = "parser::ReduceAction460::(parser::ReduceAction::action)";
+void parser___ReduceAction460___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17508;
+  fra.me.meth = LOCATE_parser___ReduceAction460___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17510 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17511 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17512 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17513 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17514 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17515 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17516 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17517 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17519 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17519);
+  }
+  /* parser/parser.nit:17521 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17521);
+  }
+  /* parser/parser.nit:17523 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17523);
+  }
+  /* parser/parser.nit:17524 */
+  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:17526 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17526);
+  }
+  /* parser/parser.nit:17528 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17528);
+  }
+  /* parser/parser.nit:17530 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17530);
+  }
+  /* parser/parser.nit:17531 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:17539 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17540 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17540);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction461___action[] = "parser::ReduceAction461::(parser::ReduceAction::action)";
+void parser___ReduceAction461___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 = 17545;
+  fra.me.meth = LOCATE_parser___ReduceAction461___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17547 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17548 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17549 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17550 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17551 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17552 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17554 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17554);
+  }
+  /* parser/parser.nit:17556 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17556);
+  }
+  /* parser/parser.nit:17558 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17558);
+  }
+  /* parser/parser.nit:17560 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17560);
+  }
+  /* parser/parser.nit:17561 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17569 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17570 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17570);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction462___action[] = "parser::ReduceAction462::(parser::ReduceAction::action)";
+void parser___ReduceAction462___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17575;
+  fra.me.meth = LOCATE_parser___ReduceAction462___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17577 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17578 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17579 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17580 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17581 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17582 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17583 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17584 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17585 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17587 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17587);
+  }
+  /* parser/parser.nit:17589 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17589);
+  }
+  /* parser/parser.nit:17591 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17591);
+  }
+  /* parser/parser.nit:17592 */
+  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:17594 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17594);
+  }
+  /* parser/parser.nit:17596 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17596);
+  }
+  /* parser/parser.nit:17597 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17605 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17606 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17606);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction463___action[] = "parser::ReduceAction463::(parser::ReduceAction::action)";
+void parser___ReduceAction463___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17611;
+  fra.me.meth = LOCATE_parser___ReduceAction463___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17613 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17614 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17615 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17616 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17617 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17618 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17619 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17621 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17621);
+  }
+  /* parser/parser.nit:17623 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17623);
+  }
+  /* parser/parser.nit:17625 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17625);
+  }
+  /* parser/parser.nit:17626 */
+  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:17628 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17628);
+  }
+  /* parser/parser.nit:17630 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17630);
+  }
+  /* parser/parser.nit:17631 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17639 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17640 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17640);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction464___action[] = "parser::ReduceAction464::(parser::ReduceAction::action)";
+void parser___ReduceAction464___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17645;
+  fra.me.meth = LOCATE_parser___ReduceAction464___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17647 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17648 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17649 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17650 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17651 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17652 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17653 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17655 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17655);
+  }
+  /* parser/parser.nit:17657 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17657);
+  }
+  /* parser/parser.nit:17659 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17659);
+  }
+  /* parser/parser.nit:17660 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17668 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17669 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17669);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction465___action[] = "parser::ReduceAction465::(parser::ReduceAction::action)";
+void parser___ReduceAction465___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 = 17674;
+  fra.me.meth = LOCATE_parser___ReduceAction465___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17676 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17677 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17678 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17679 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17680 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17681 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17682 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17683 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17684 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17685 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17687 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17687);
+  }
+  /* parser/parser.nit:17689 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17689);
+  }
+  /* parser/parser.nit:17691 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17691);
+  }
+  /* parser/parser.nit:17692 */
+  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:17694 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17694);
+  }
+  /* parser/parser.nit:17695 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17703 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17704 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17704);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction466___action[] = "parser::ReduceAction466::(parser::ReduceAction::action)";
+void parser___ReduceAction466___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17709;
+  fra.me.meth = LOCATE_parser___ReduceAction466___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17711 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17712 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17713 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17714 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17715 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17716 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17717 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17718 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17720 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17720);
+  }
+  /* parser/parser.nit:17722 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17722);
+  }
+  /* parser/parser.nit:17724 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17724);
+  }
+  /* parser/parser.nit:17725 */
+  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:17727 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17727);
+  }
+  /* parser/parser.nit:17728 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17736 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17737 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17737);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction467___action[] = "parser::ReduceAction467::(parser::ReduceAction::action)";
+void parser___ReduceAction467___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17742;
+  fra.me.meth = LOCATE_parser___ReduceAction467___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17744 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17745 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17746 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17747 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17748 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17749 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17750 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17752 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17752);
+  }
+  /* parser/parser.nit:17754 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17754);
+  }
+  /* parser/parser.nit:17756 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17756);
+  }
+  /* parser/parser.nit:17758 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17758);
+  }
+  /* parser/parser.nit:17759 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17767 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17768 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17768);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction468___action[] = "parser::ReduceAction468::(parser::ReduceAction::action)";
+void parser___ReduceAction468___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 = 17773;
+  fra.me.meth = LOCATE_parser___ReduceAction468___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17775 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17776 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17777 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17778 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17779 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17780 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17781 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17782 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17783 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17784 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17786 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17786);
+  }
+  /* parser/parser.nit:17788 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17788);
+  }
+  /* parser/parser.nit:17790 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17790);
+  }
+  /* parser/parser.nit:17791 */
+  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:17793 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17793);
+  }
+  /* parser/parser.nit:17795 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17795);
+  }
+  /* parser/parser.nit:17796 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17804 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17805 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17805);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction469___action[] = "parser::ReduceAction469::(parser::ReduceAction::action)";
+void parser___ReduceAction469___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17810;
+  fra.me.meth = LOCATE_parser___ReduceAction469___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17812 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17813 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17814 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17815 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17816 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17817 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17818 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17819 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17821 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17821);
+  }
+  /* parser/parser.nit:17823 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17823);
+  }
+  /* parser/parser.nit:17825 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17825);
+  }
+  /* parser/parser.nit:17826 */
+  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:17828 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17828);
+  }
+  /* parser/parser.nit:17830 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17830);
+  }
+  /* parser/parser.nit:17831 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:17839 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17840 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17840);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction470___action[] = "parser::ReduceAction470::(parser::ReduceAction::action)";
+void parser___ReduceAction470___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17845;
+  fra.me.meth = LOCATE_parser___ReduceAction470___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17847 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17848 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17849 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17850 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17851 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17852 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17854 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17854);
+  }
+  /* parser/parser.nit:17856 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17856);
+  }
+  /* parser/parser.nit:17858 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17858);
+  }
+  /* parser/parser.nit:17859 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:17867 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17868 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17868);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction471___action[] = "parser::ReduceAction471::(parser::ReduceAction::action)";
+void parser___ReduceAction471___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17873;
+  fra.me.meth = LOCATE_parser___ReduceAction471___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17875 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17876 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17877 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17878 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17879 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17880 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17881 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17882 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17883 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17885 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17885);
+  }
+  /* parser/parser.nit:17887 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17887);
+  }
+  /* parser/parser.nit:17889 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17889);
+  }
+  /* parser/parser.nit:17890 */
+  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:17892 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17892);
+  }
+  /* parser/parser.nit:17893 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:17901 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17902 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17902);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction472___action[] = "parser::ReduceAction472::(parser::ReduceAction::action)";
+void parser___ReduceAction472___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17907;
+  fra.me.meth = LOCATE_parser___ReduceAction472___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17909 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17910 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17911 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17912 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17913 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17914 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17915 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:17917 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17917);
+  }
+  /* parser/parser.nit:17919 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17919);
+  }
+  /* parser/parser.nit:17921 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17921);
+  }
+  /* parser/parser.nit:17922 */
+  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:17924 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17924);
+  }
+  /* parser/parser.nit:17925 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:17933 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17934 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17934);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction473___action[] = "parser::ReduceAction473::(parser::ReduceAction::action)";
+void parser___ReduceAction473___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 17939;
+  fra.me.meth = LOCATE_parser___ReduceAction473___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17941 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17942 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17944 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17944);
+  }
+  /* parser/parser.nit:17945 */
+  fra.me.REG[3] = NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[3]);
+  /* parser/parser.nit:17948 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17949 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17949);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction474___action[] = "parser::ReduceAction474::(parser::ReduceAction::action)";
+void parser___ReduceAction474___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 = 17954;
+  fra.me.meth = LOCATE_parser___ReduceAction474___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17956 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17957 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17959 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17959);
+  }
+  /* parser/parser.nit:17960 */
+  fra.me.REG[3] = NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[3]);
+  /* parser/parser.nit:17963 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17964 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17964);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction475___action[] = "parser::ReduceAction475::(parser::ReduceAction::action)";
+void parser___ReduceAction475___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 = 17969;
+  fra.me.meth = LOCATE_parser___ReduceAction475___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17971 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17972 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17974 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17974);
+  }
+  /* parser/parser.nit:17975 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:17980 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:17981 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17981);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction476___action[] = "parser::ReduceAction476::(parser::ReduceAction::action)";
+void parser___ReduceAction476___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 = 17986;
+  fra.me.meth = LOCATE_parser___ReduceAction476___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:17988 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:17989 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17990 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17992 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17992);
+  }
+  /* parser/parser.nit:17994 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17994);
+  }
+  /* parser/parser.nit:17995 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:18003 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18004 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18004);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction477___action[] = "parser::ReduceAction477::(parser::ReduceAction::action)";
+void parser___ReduceAction477___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 = 18009;
+  fra.me.meth = LOCATE_parser___ReduceAction477___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18011 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18012 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18013 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18014 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18016 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18016);
+  }
+  /* parser/parser.nit:18018 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18018);
+  }
+  /* parser/parser.nit:18020 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18020);
+  }
+  /* parser/parser.nit:18021 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:18029 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18030 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18030);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction478___action[] = "parser::ReduceAction478::(parser::ReduceAction::action)";
+void parser___ReduceAction478___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 = 18035;
+  fra.me.meth = LOCATE_parser___ReduceAction478___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18037 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18038 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18039 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18040 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18042 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18042);
+  }
+  /* parser/parser.nit:18044 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18044);
+  }
+  /* parser/parser.nit:18046 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18046);
+  }
+  /* parser/parser.nit:18047 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:18055 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18056 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18056);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction479___action[] = "parser::ReduceAction479::(parser::ReduceAction::action)";
+void parser___ReduceAction479___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 = 18061;
+  fra.me.meth = LOCATE_parser___ReduceAction479___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18063 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18064 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18065 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18066 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18067 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18069 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18069);
+  }
+  /* parser/parser.nit:18071 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18071);
+  }
+  /* parser/parser.nit:18073 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18073);
+  }
+  /* parser/parser.nit:18075 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18075);
+  }
+  /* parser/parser.nit:18076 */
+  fra.me.REG[4] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
+  /* parser/parser.nit:18084 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:18085 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18085);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction480___action[] = "parser::ReduceAction480::(parser::ReduceAction::action)";
+void parser___ReduceAction480___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18090;
+  fra.me.meth = LOCATE_parser___ReduceAction480___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18092 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18093 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18094 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18095 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18096 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18097 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18099 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18099);
+  }
+  /* parser/parser.nit:18101 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18101);
+  }
+  /* parser/parser.nit:18103 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18103);
+  }
+  /* parser/parser.nit:18105 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18105);
+  }
+  /* parser/parser.nit:18106 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18114 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18115 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18115);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction481___action[] = "parser::ReduceAction481::(parser::ReduceAction::action)";
+void parser___ReduceAction481___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18120;
+  fra.me.meth = LOCATE_parser___ReduceAction481___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18122 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18123 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18124 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18125 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18126 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18127 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18128 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18130 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18130);
+  }
+  /* parser/parser.nit:18132 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18132);
+  }
+  /* parser/parser.nit:18134 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18134);
+  }
+  /* parser/parser.nit:18136 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18136);
+  }
+  /* parser/parser.nit:18138 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18138);
+  }
+  /* parser/parser.nit:18139 */
+  fra.me.REG[5] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:18147 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:18148 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18148);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction482___action[] = "parser::ReduceAction482::(parser::ReduceAction::action)";
+void parser___ReduceAction482___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18153;
+  fra.me.meth = LOCATE_parser___ReduceAction482___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18155 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18156 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18157 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18158 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18159 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18160 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18161 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18163 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18163);
+  }
+  /* parser/parser.nit:18165 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18165);
+  }
+  /* parser/parser.nit:18167 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18167);
+  }
+  /* parser/parser.nit:18169 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18169);
+  }
+  /* parser/parser.nit:18171 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18171);
+  }
+  /* parser/parser.nit:18172 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18180 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18181 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18181);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction483___action[] = "parser::ReduceAction483::(parser::ReduceAction::action)";
+void parser___ReduceAction483___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18186;
+  fra.me.meth = LOCATE_parser___ReduceAction483___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18188 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18189 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18190 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18191 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18192 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18193 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18194 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18195 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18197 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18197);
+  }
+  /* parser/parser.nit:18199 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18199);
+  }
+  /* parser/parser.nit:18201 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18201);
+  }
+  /* parser/parser.nit:18203 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18203);
+  }
+  /* parser/parser.nit:18205 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18205);
+  }
+  /* parser/parser.nit:18207 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18207);
+  }
+  /* parser/parser.nit:18208 */
+  fra.me.REG[6] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser.nit:18216 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:18217 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18217);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction484___action[] = "parser::ReduceAction484::(parser::ReduceAction::action)";
+void parser___ReduceAction484___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18222;
+  fra.me.meth = LOCATE_parser___ReduceAction484___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18224 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18225 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18226 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18227 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18228 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18229 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18230 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18232 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18232);
+  }
+  /* parser/parser.nit:18234 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18234);
+  }
+  /* parser/parser.nit:18236 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18236);
+  }
+  /* parser/parser.nit:18238 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18238);
+  }
+  /* parser/parser.nit:18239 */
+  fra.me.REG[3] = NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18245 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18246 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18246);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction485___action[] = "parser::ReduceAction485::(parser::ReduceAction::action)";
+void parser___ReduceAction485___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18251;
+  fra.me.meth = LOCATE_parser___ReduceAction485___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18253 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18254 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18255 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18256 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18257 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:18259 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18259);
+  }
+  /* parser/parser.nit:18261 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18261);
+  }
+  /* parser/parser.nit:18263 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18263);
+  }
+  /* parser/parser.nit:18264 */
+  fra.me.REG[3] = NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18270 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18271 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18271);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction486___action[] = "parser::ReduceAction486::(parser::ReduceAction::action)";
+void parser___ReduceAction486___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18276;
+  fra.me.meth = LOCATE_parser___ReduceAction486___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18278 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18279 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18280 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18281 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18282 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18283 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18284 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18285 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18287 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18287);
+  }
+  /* parser/parser.nit:18289 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18289);
+  }
+  /* parser/parser.nit:18291 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18291);
+  }
+  /* parser/parser.nit:18293 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18293);
+  }
+  /* parser/parser.nit:18295 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18295);
+  }
+  /* parser/parser.nit:18296 */
+  fra.me.REG[3] = NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18303 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18304 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18304);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction487___action[] = "parser::ReduceAction487::(parser::ReduceAction::action)";
+void parser___ReduceAction487___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18309;
+  fra.me.meth = LOCATE_parser___ReduceAction487___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18311 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18312 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18313 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18314 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18315 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18316 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:18318 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18318);
+  }
+  /* parser/parser.nit:18320 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18320);
+  }
+  /* parser/parser.nit:18322 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18322);
+  }
+  /* parser/parser.nit:18324 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18324);
+  }
+  /* parser/parser.nit:18325 */
+  fra.me.REG[3] = NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18332 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18333 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18333);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction488___action[] = "parser::ReduceAction488::(parser::ReduceAction::action)";
+void parser___ReduceAction488___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18338;
+  fra.me.meth = LOCATE_parser___ReduceAction488___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18340 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18341 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18342 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18343 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18344 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18346 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18346);
+  }
+  /* parser/parser.nit:18348 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18348);
+  }
+  /* parser/parser.nit:18350 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18350);
+  }
+  /* parser/parser.nit:18352 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18352);
+  }
+  /* parser/parser.nit:18353 */
+  fra.me.REG[3] = NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18359 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18360 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18360);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction489___action[] = "parser::ReduceAction489::(parser::ReduceAction::action)";
+void parser___ReduceAction489___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18365;
+  fra.me.meth = LOCATE_parser___ReduceAction489___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18367 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18368 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18369 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18370 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18371 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18372 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18373 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18375 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18375);
+  }
+  /* parser/parser.nit:18377 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18377);
+  }
+  /* parser/parser.nit:18379 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18379);
+  }
+  /* parser/parser.nit:18381 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18381);
+  }
+  /* parser/parser.nit:18382 */
+  fra.me.REG[3] = NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18388 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18389 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18389);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction490___action[] = "parser::ReduceAction490::(parser::ReduceAction::action)";
+void parser___ReduceAction490___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18394;
+  fra.me.meth = LOCATE_parser___ReduceAction490___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18396 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18397 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18398 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18399 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18400 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:18402 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18402);
+  }
+  /* parser/parser.nit:18404 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18404);
+  }
+  /* parser/parser.nit:18406 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18406);
+  }
+  /* parser/parser.nit:18407 */
+  fra.me.REG[3] = NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18413 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18414 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18414);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction491___action[] = "parser::ReduceAction491::(parser::ReduceAction::action)";
+void parser___ReduceAction491___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18419;
+  fra.me.meth = LOCATE_parser___ReduceAction491___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18421 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18422 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18423 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18424 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18425 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18426 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18427 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18428 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18430 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18430);
+  }
+  /* parser/parser.nit:18432 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18432);
+  }
+  /* parser/parser.nit:18434 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18434);
+  }
+  /* parser/parser.nit:18436 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18436);
+  }
+  /* parser/parser.nit:18438 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18438);
+  }
+  /* parser/parser.nit:18439 */
+  fra.me.REG[3] = NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18446 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18447 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18447);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction492___action[] = "parser::ReduceAction492::(parser::ReduceAction::action)";
+void parser___ReduceAction492___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18452;
+  fra.me.meth = LOCATE_parser___ReduceAction492___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18454 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18455 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18456 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18457 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18458 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18459 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:18461 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18461);
+  }
+  /* parser/parser.nit:18463 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18463);
+  }
+  /* parser/parser.nit:18465 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18465);
+  }
+  /* parser/parser.nit:18467 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18467);
+  }
+  /* parser/parser.nit:18468 */
+  fra.me.REG[3] = NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18475 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18476 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18476);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction493___action[] = "parser::ReduceAction493::(parser::ReduceAction::action)";
+void parser___ReduceAction493___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 = 18481;
+  fra.me.meth = LOCATE_parser___ReduceAction493___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18483 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18484 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18485 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18486 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18487 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18489 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18489);
+  }
+  /* parser/parser.nit:18491 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18491);
+  }
+  /* parser/parser.nit:18493 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18493);
+  }
+  /* parser/parser.nit:18495 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18495);
+  }
+  /* parser/parser.nit:18496 */
+  fra.me.REG[3] = NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18502 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18503 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18503);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction494___action[] = "parser::ReduceAction494::(parser::ReduceAction::action)";
+void parser___ReduceAction494___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18508;
+  fra.me.meth = LOCATE_parser___ReduceAction494___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18510 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18511 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18513 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPluseq, ID_parser___parser_nodes___TPluseq)) /*cast nullable TPluseq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18513);
+  }
+  /* parser/parser.nit:18514 */
+  fra.me.REG[3] = NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[3]);
+  /* parser/parser.nit:18517 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18518 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18518);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction495___action[] = "parser::ReduceAction495::(parser::ReduceAction::action)";
+void parser___ReduceAction495___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18523;
+  fra.me.meth = LOCATE_parser___ReduceAction495___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18525 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18526 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18528 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMinuseq, ID_parser___parser_nodes___TMinuseq)) /*cast nullable TMinuseq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18528);
+  }
+  /* parser/parser.nit:18529 */
+  fra.me.REG[3] = NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[3]);
+  /* parser/parser.nit:18532 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18533 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18533);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction496___action[] = "parser::ReduceAction496::(parser::ReduceAction::action)";
+void parser___ReduceAction496___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18538;
+  fra.me.meth = LOCATE_parser___ReduceAction496___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18540 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18541 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18542 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18543 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18545 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18545);
+  }
+  /* parser/parser.nit:18547 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18547);
+  }
+  /* parser/parser.nit:18549 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18549);
+  }
+  /* parser/parser.nit:18550 */
+  fra.me.REG[3] = NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18555 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18556 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18556);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction497___action[] = "parser::ReduceAction497::(parser::ReduceAction::action)";
+void parser___ReduceAction497___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18561;
+  fra.me.meth = LOCATE_parser___ReduceAction497___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18563 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18564 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18565 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18567 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18567);
+  }
+  /* parser/parser.nit:18569 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18569);
+  }
+  /* parser/parser.nit:18570 */
+  fra.me.REG[3] = NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18575 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18576 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18576);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction498___action[] = "parser::ReduceAction498::(parser::ReduceAction::action)";
+void parser___ReduceAction498___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 18581;
+  fra.me.meth = LOCATE_parser___ReduceAction498___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18583 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18584 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18585 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18586 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18587 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18588 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18589 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18590 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18591 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18593 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18593);
+  }
+  /* parser/parser.nit:18595 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18595);
+  }
+  /* parser/parser.nit:18597 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18597);
+  }
+  /* parser/parser.nit:18599 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18599);
+  }
+  /* parser/parser.nit:18600 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18606 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18607 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18607);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction499___action[] = "parser::ReduceAction499::(parser::ReduceAction::action)";
+void parser___ReduceAction499___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 18612;
+  fra.me.meth = LOCATE_parser___ReduceAction499___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18614 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18615 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18616 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18617 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18618 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18619 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18620 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18622 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18622);
+  }
+  /* parser/parser.nit:18624 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18624);
+  }
+  /* parser/parser.nit:18626 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18626);
+  }
+  /* parser/parser.nit:18627 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18633 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18634 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18634);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction500___action[] = "parser::ReduceAction500::(parser::ReduceAction::action)";
+void parser___ReduceAction500___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18639;
+  fra.me.meth = LOCATE_parser___ReduceAction500___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18641 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18642 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18643 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18644 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18645 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18646 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18647 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18648 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18649 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18651 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18651);
+  }
+  /* parser/parser.nit:18653 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18653);
+  }
+  /* parser/parser.nit:18655 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18655);
+  }
+  /* parser/parser.nit:18657 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18657);
+  }
+  /* parser/parser.nit:18658 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18664 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18665 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18665);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction501___action[] = "parser::ReduceAction501::(parser::ReduceAction::action)";
+void parser___ReduceAction501___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 = 18670;
+  fra.me.meth = LOCATE_parser___ReduceAction501___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18672 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18673 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18674 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18675 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18676 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18677 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18678 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18680 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18680);
+  }
+  /* parser/parser.nit:18682 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18682);
+  }
+  /* parser/parser.nit:18684 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18684);
+  }
+  /* parser/parser.nit:18685 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:18691 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18692 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18692);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction502___action[] = "parser::ReduceAction502::(parser::ReduceAction::action)";
+void parser___ReduceAction502___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18697;
+  fra.me.meth = LOCATE_parser___ReduceAction502___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18699 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18700 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18701 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18702 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18703 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18704 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18705 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18706 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18708 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18708);
+  }
+  /* parser/parser.nit:18710 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18710);
+  }
+  /* parser/parser.nit:18712 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18712);
+  }
+  /* parser/parser.nit:18713 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:18719 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18720 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18720);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction505___action[] = "parser::ReduceAction505::(parser::ReduceAction::action)";
+void parser___ReduceAction505___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 18725;
+  fra.me.meth = LOCATE_parser___ReduceAction505___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18727 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18728 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18729 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18730 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18732 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast nullable TKwloop*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18732);
+  }
+  /* parser/parser.nit:18734 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18734);
+  }
+  /* parser/parser.nit:18736 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18736);
+  }
+  /* parser/parser.nit:18737 */
+  fra.me.REG[3] = NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18742 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18743 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18743);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction506___action[] = "parser::ReduceAction506::(parser::ReduceAction::action)";
+void parser___ReduceAction506___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18748;
+  fra.me.meth = LOCATE_parser___ReduceAction506___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18750 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18751 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18752 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18754 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast nullable TKwloop*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18754);
+  }
+  /* parser/parser.nit:18756 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18756);
+  }
+  /* parser/parser.nit:18757 */
+  fra.me.REG[3] = NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18762 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18763 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18763);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction507___action[] = "parser::ReduceAction507::(parser::ReduceAction::action)";
+void parser___ReduceAction507___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 = 18768;
+  fra.me.meth = LOCATE_parser___ReduceAction507___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18770 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18771 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18772 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18773 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18774 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18775 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18776 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18777 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18779 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast nullable TKwwhile*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18779);
+  }
+  /* parser/parser.nit:18781 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18781);
+  }
+  /* parser/parser.nit:18783 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18783);
+  }
+  /* parser/parser.nit:18785 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18785);
+  }
+  /* parser/parser.nit:18787 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18787);
+  }
+  /* parser/parser.nit:18788 */
+  fra.me.REG[3] = NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18795 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18796 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18796);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction508___action[] = "parser::ReduceAction508::(parser::ReduceAction::action)";
+void parser___ReduceAction508___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18801;
+  fra.me.meth = LOCATE_parser___ReduceAction508___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18803 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18804 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18805 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18806 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18807 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18808 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18809 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18811 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast nullable TKwwhile*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18811);
+  }
+  /* parser/parser.nit:18813 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18813);
+  }
+  /* parser/parser.nit:18815 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18815);
+  }
+  /* parser/parser.nit:18817 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18817);
+  }
+  /* parser/parser.nit:18818 */
+  fra.me.REG[3] = NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18825 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18826 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18826);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction509___action[] = "parser::ReduceAction509::(parser::ReduceAction::action)";
+void parser___ReduceAction509___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 = 18831;
+  fra.me.meth = LOCATE_parser___ReduceAction509___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18833 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18834 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18835 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18836 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18837 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18838 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18839 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18840 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18841 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18842 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18843 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18844 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18845 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18846 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18847 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:18849 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18849);
+  }
+  /* parser/parser.nit:18851 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18851);
+  }
+  /* parser/parser.nit:18852 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
+  fra.me.REG[9] = fra.me.REG[7];
+  /* parser/parser.nit:18854 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18854);
+  }
+  /* parser/parser.nit:18856 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18856);
+  }
+  /* parser/parser.nit:18858 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18858);
+  }
+  /* parser/parser.nit:18860 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18860);
+  }
+  /* parser/parser.nit:18861 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[9], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18869 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18870 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18870);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction510___action[] = "parser::ReduceAction510::(parser::ReduceAction::action)";
+void parser___ReduceAction510___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 = 18875;
+  fra.me.meth = LOCATE_parser___ReduceAction510___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18877 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18878 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18879 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18880 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18881 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18882 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18883 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18884 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18885 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18886 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18887 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18888 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18889 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:18891 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18891);
+  }
+  /* parser/parser.nit:18893 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18893);
+  }
+  /* parser/parser.nit:18894 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
+  fra.me.REG[9] = fra.me.REG[7];
+  /* parser/parser.nit:18896 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18896);
+  }
+  /* parser/parser.nit:18898 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18898);
+  }
+  /* parser/parser.nit:18900 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18900);
+  }
+  /* parser/parser.nit:18902 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18902);
+  }
+  /* parser/parser.nit:18903 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[9], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:18911 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18912 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18912);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction511___action[] = "parser::ReduceAction511::(parser::ReduceAction::action)";
+void parser___ReduceAction511___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18917;
+  fra.me.meth = LOCATE_parser___ReduceAction511___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18919 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18920 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18921 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18922 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18923 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18924 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18925 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18926 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18927 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18928 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18929 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18930 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18931 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18932 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:18934 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18934);
+  }
+  /* parser/parser.nit:18936 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18936);
+  }
+  /* parser/parser.nit:18937 */
+  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:18939 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18939);
+  }
+  /* parser/parser.nit:18941 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18941);
+  }
+  /* parser/parser.nit:18943 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18943);
+  }
+  /* parser/parser.nit:18944 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18952 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18953 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18953);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction512___action[] = "parser::ReduceAction512::(parser::ReduceAction::action)";
+void parser___ReduceAction512___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 18958;
+  fra.me.meth = LOCATE_parser___ReduceAction512___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18960 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:18961 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18962 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18963 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18964 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18965 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18966 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18967 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18968 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18969 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18970 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18971 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:18973 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18973);
+  }
+  /* parser/parser.nit:18975 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18975);
+  }
+  /* parser/parser.nit:18976 */
+  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:18978 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18978);
+  }
+  /* parser/parser.nit:18980 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18980);
+  }
+  /* parser/parser.nit:18982 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18982);
+  }
+  /* parser/parser.nit:18983 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:18991 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:18992 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18992);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction513___action[] = "parser::ReduceAction513::(parser::ReduceAction::action)";
+void parser___ReduceAction513___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 18997;
+  fra.me.meth = LOCATE_parser___ReduceAction513___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:18999 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19000 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19001 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19002 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19003 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19005 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19005);
+  }
+  /* parser/parser.nit:19007 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19007);
+  }
+  /* parser/parser.nit:19009 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19009);
+  }
+  /* parser/parser.nit:19010 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19016 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19017 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19017);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction514___action[] = "parser::ReduceAction514::(parser::ReduceAction::action)";
+void parser___ReduceAction514___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19022;
+  fra.me.meth = LOCATE_parser___ReduceAction514___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19024 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19025 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19026 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19027 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19028 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19029 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19031 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19031);
+  }
+  /* parser/parser.nit:19033 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19033);
+  }
+  /* parser/parser.nit:19035 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19035);
+  }
+  /* parser/parser.nit:19037 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19037);
+  }
+  /* parser/parser.nit:19038 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19044 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19045 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19045);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction515___action[] = "parser::ReduceAction515::(parser::ReduceAction::action)";
+void parser___ReduceAction515___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 19050;
+  fra.me.meth = LOCATE_parser___ReduceAction515___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19052 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19053 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19054 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19056 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19056);
+  }
+  /* parser/parser.nit:19058 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19058);
+  }
+  /* parser/parser.nit:19059 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:19065 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19066 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19066);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction516___action[] = "parser::ReduceAction516::(parser::ReduceAction::action)";
+void parser___ReduceAction516___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 19071;
+  fra.me.meth = LOCATE_parser___ReduceAction516___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19073 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19074 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19075 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19076 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19078 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19078);
+  }
+  /* parser/parser.nit:19080 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19080);
+  }
+  /* parser/parser.nit:19082 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19082);
+  }
+  /* parser/parser.nit:19083 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:19089 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19090 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19090);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction517___action[] = "parser::ReduceAction517::(parser::ReduceAction::action)";
+void parser___ReduceAction517___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19095;
+  fra.me.meth = LOCATE_parser___ReduceAction517___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19097 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19098 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19099 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19101 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19102 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19102);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction521___action[] = "parser::ReduceAction521::(parser::ReduceAction::action)";
+void parser___ReduceAction521___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19107;
+  fra.me.meth = LOCATE_parser___ReduceAction521___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19109 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19110 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19111 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19112 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19113 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:19115 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19115);
+  }
+  /* parser/parser.nit:19117 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19117);
+  }
+  /* parser/parser.nit:19119 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19119);
+  }
+  /* parser/parser.nit:19120 */
+  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:19121 */
+  fra.me.REG[6] = NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:19126 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:19127 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19127);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction523___action[] = "parser::ReduceAction523::(parser::ReduceAction::action)";
+void parser___ReduceAction523___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19132;
+  fra.me.meth = LOCATE_parser___ReduceAction523___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19134 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19135 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19136 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19137 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19138 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19139 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19140 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19141 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19142 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19143 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19144 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19145 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19147 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19147);
+  }
+  /* parser/parser.nit:19149 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19149);
+  }
+  /* parser/parser.nit:19151 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwthen, ID_parser___parser_nodes___TKwthen)) /*cast nullable TKwthen*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19151);
+  }
+  /* parser/parser.nit:19153 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19153);
+  }
+  /* parser/parser.nit:19155 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwelse, ID_parser___parser_nodes___TKwelse)) /*cast nullable TKwelse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19155);
+  }
+  /* parser/parser.nit:19157 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19157);
+  }
+  /* parser/parser.nit:19158 */
+  fra.me.REG[3] = NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19166 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19167 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19167);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction525___action[] = "parser::ReduceAction525::(parser::ReduceAction::action)";
+void parser___ReduceAction525___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19172;
+  fra.me.meth = LOCATE_parser___ReduceAction525___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19174 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19175 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19176 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19177 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19178 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19180 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19180);
+  }
+  /* parser/parser.nit:19182 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19182);
+  }
+  /* parser/parser.nit:19183 */
+  fra.me.REG[3] = NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19187 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19188 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19188);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction526___action[] = "parser::ReduceAction526::(parser::ReduceAction::action)";
+void parser___ReduceAction526___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19193;
+  fra.me.meth = LOCATE_parser___ReduceAction526___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19195 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19196 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19197 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19198 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19199 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19201 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19201);
+  }
+  /* parser/parser.nit:19203 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19203);
+  }
+  /* parser/parser.nit:19204 */
+  fra.me.REG[3] = NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19208 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19209 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19209);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction527___action[] = "parser::ReduceAction527::(parser::ReduceAction::action)";
+void parser___ReduceAction527___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 = 19214;
+  fra.me.meth = LOCATE_parser___ReduceAction527___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19216 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19217 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19218 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19219 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19220 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19221 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19223 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19223);
+  }
+  /* parser/parser.nit:19225 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19225);
+  }
+  /* parser/parser.nit:19226 */
+  fra.me.REG[3] = NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19230 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19231 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19231);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction529___action[] = "parser::ReduceAction529::(parser::ReduceAction::action)";
+void parser___ReduceAction529___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 19236;
+  fra.me.meth = LOCATE_parser___ReduceAction529___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19238 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19239 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19240 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19241 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19243 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19243);
+  }
+  /* parser/parser.nit:19245 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19245);
+  }
+  /* parser/parser.nit:19246 */
+  fra.me.REG[3] = NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19250 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19251 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19251);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction531___action[] = "parser::ReduceAction531::(parser::ReduceAction::action)";
+void parser___ReduceAction531___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19256;
+  fra.me.meth = LOCATE_parser___ReduceAction531___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19258 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19259 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19260 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19261 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19262 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19264 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19264);
+  }
+  /* parser/parser.nit:19266 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19266);
+  }
+  /* parser/parser.nit:19267 */
+  fra.me.REG[3] = NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19271 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19272 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19272);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction532___action[] = "parser::ReduceAction532::(parser::ReduceAction::action)";
+void parser___ReduceAction532___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19277;
+  fra.me.meth = LOCATE_parser___ReduceAction532___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19279 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19280 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19281 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19282 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19283 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19285 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19285);
+  }
+  /* parser/parser.nit:19287 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19287);
+  }
+  /* parser/parser.nit:19288 */
+  fra.me.REG[3] = NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19292 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19293 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19293);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction533___action[] = "parser::ReduceAction533::(parser::ReduceAction::action)";
+void parser___ReduceAction533___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19298;
+  fra.me.meth = LOCATE_parser___ReduceAction533___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19300 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19301 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19302 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19303 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19304 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19306 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19306);
+  }
+  /* parser/parser.nit:19308 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19308);
+  }
+  /* parser/parser.nit:19309 */
+  fra.me.REG[3] = NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19313 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19314 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19314);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction534___action[] = "parser::ReduceAction534::(parser::ReduceAction::action)";
+void parser___ReduceAction534___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[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 = 19319;
+  fra.me.meth = LOCATE_parser___ReduceAction534___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19321 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19322 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19323 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19324 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19325 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19327 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19327);
+  }
+  /* parser/parser.nit:19329 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19329);
+  }
+  /* parser/parser.nit:19330 */
+  fra.me.REG[3] = NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19334 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19335 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19335);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction535___action[] = "parser::ReduceAction535::(parser::ReduceAction::action)";
+void parser___ReduceAction535___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 = 19340;
+  fra.me.meth = LOCATE_parser___ReduceAction535___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19342 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19343 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19344 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19345 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19346 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19348 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19348);
+  }
+  /* parser/parser.nit:19350 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19350);
+  }
+  /* parser/parser.nit:19351 */
+  fra.me.REG[3] = NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19355 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19356 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19356);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction536___action[] = "parser::ReduceAction536::(parser::ReduceAction::action)";
+void parser___ReduceAction536___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 = 19361;
+  fra.me.meth = LOCATE_parser___ReduceAction536___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19363 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19364 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19365 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19366 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19367 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19369 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19369);
+  }
+  /* parser/parser.nit:19371 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19371);
+  }
+  /* parser/parser.nit:19372 */
+  fra.me.REG[3] = NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19376 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19377 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19377);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction537___action[] = "parser::ReduceAction537::(parser::ReduceAction::action)";
+void parser___ReduceAction537___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 = 19382;
+  fra.me.meth = LOCATE_parser___ReduceAction537___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19384 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19385 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19386 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19387 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19388 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19390 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19390);
+  }
+  /* parser/parser.nit:19392 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19392);
+  }
+  /* parser/parser.nit:19393 */
+  fra.me.REG[3] = NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19397 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19398 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19398);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction538___action[] = "parser::ReduceAction538::(parser::ReduceAction::action)";
+void parser___ReduceAction538___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 = 19403;
+  fra.me.meth = LOCATE_parser___ReduceAction538___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19405 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19406 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19407 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19408 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19409 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19411 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19411);
+  }
+  /* parser/parser.nit:19413 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19413);
+  }
+  /* parser/parser.nit:19414 */
+  fra.me.REG[3] = NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19418 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19419 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19419);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction539___action[] = "parser::ReduceAction539::(parser::ReduceAction::action)";
+void parser___ReduceAction539___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 = 19424;
+  fra.me.meth = LOCATE_parser___ReduceAction539___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19426 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19427 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19428 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19429 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19430 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19432 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19432);
+  }
+  /* parser/parser.nit:19434 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19434);
+  }
+  /* parser/parser.nit:19435 */
+  fra.me.REG[3] = NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19439 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19440 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19440);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction540___action[] = "parser::ReduceAction540::(parser::ReduceAction::action)";
+void parser___ReduceAction540___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 = 19445;
+  fra.me.meth = LOCATE_parser___ReduceAction540___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19447 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19448 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19449 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19450 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19451 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19453 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19453);
+  }
+  /* parser/parser.nit:19455 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19455);
+  }
+  /* parser/parser.nit:19456 */
+  fra.me.REG[3] = NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19460 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19461 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19461);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction541___action[] = "parser::ReduceAction541::(parser::ReduceAction::action)";
+void parser___ReduceAction541___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 = 19466;
+  fra.me.meth = LOCATE_parser___ReduceAction541___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19468 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19469 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19470 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19471 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19472 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19474 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19474);
+  }
+  /* parser/parser.nit:19476 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19476);
+  }
+  /* parser/parser.nit:19477 */
+  fra.me.REG[3] = NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19481 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19482 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19482);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction543___action[] = "parser::ReduceAction543::(parser::ReduceAction::action)";
+void parser___ReduceAction543___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 = 19487;
+  fra.me.meth = LOCATE_parser___ReduceAction543___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19489 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19490 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19491 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19492 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19493 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19495 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19495);
+  }
+  /* parser/parser.nit:19497 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19497);
+  }
+  /* parser/parser.nit:19498 */
+  fra.me.REG[3] = NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19502 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19503 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19503);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction544___action[] = "parser::ReduceAction544::(parser::ReduceAction::action)";
+void parser___ReduceAction544___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 = 19508;
+  fra.me.meth = LOCATE_parser___ReduceAction544___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19510 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19511 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19512 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19513 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19514 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19516 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19516);
+  }
+  /* parser/parser.nit:19518 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19518);
+  }
+  /* parser/parser.nit:19519 */
+  fra.me.REG[3] = NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19523 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19524 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19524);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction546___action[] = "parser::ReduceAction546::(parser::ReduceAction::action)";
+void parser___ReduceAction546___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 = 19529;
+  fra.me.meth = LOCATE_parser___ReduceAction546___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19531 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19532 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19533 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19534 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19535 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19537 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19537);
+  }
+  /* parser/parser.nit:19539 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19539);
+  }
+  /* parser/parser.nit:19540 */
+  fra.me.REG[3] = NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19544 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19545 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19545);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction547___action[] = "parser::ReduceAction547::(parser::ReduceAction::action)";
+void parser___ReduceAction547___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 = 19550;
+  fra.me.meth = LOCATE_parser___ReduceAction547___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19552 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19553 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19554 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19555 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19556 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19558 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19558);
+  }
+  /* parser/parser.nit:19560 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19560);
+  }
+  /* parser/parser.nit:19561 */
+  fra.me.REG[3] = NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19565 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19566 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19566);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction548___action[] = "parser::ReduceAction548::(parser::ReduceAction::action)";
+void parser___ReduceAction548___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 = 19571;
+  fra.me.meth = LOCATE_parser___ReduceAction548___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19573 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19574 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19575 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19576 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19577 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19579 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19579);
+  }
+  /* parser/parser.nit:19581 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19581);
+  }
+  /* parser/parser.nit:19582 */
+  fra.me.REG[3] = NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19586 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19587 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19587);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction550___action[] = "parser::ReduceAction550::(parser::ReduceAction::action)";
+void parser___ReduceAction550___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 = 19592;
+  fra.me.meth = LOCATE_parser___ReduceAction550___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19594 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19595 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19596 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19597 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19599 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast nullable TMinus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19599);
+  }
+  /* parser/parser.nit:19601 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19601);
+  }
+  /* parser/parser.nit:19602 */
+  fra.me.REG[3] = NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19606 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19607 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19607);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction551___action[] = "parser::ReduceAction551::(parser::ReduceAction::action)";
+void parser___ReduceAction551___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 = 19612;
+  fra.me.meth = LOCATE_parser___ReduceAction551___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19614 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19615 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19616 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19617 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19619 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwonce, ID_parser___parser_nodes___TKwonce)) /*cast nullable TKwonce*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19619);
+  }
+  /* parser/parser.nit:19621 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19621);
+  }
+  /* parser/parser.nit:19622 */
+  fra.me.REG[3] = NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19626 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19627 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19627);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction553___action[] = "parser::ReduceAction553::(parser::ReduceAction::action)";
+void parser___ReduceAction553___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 = 19632;
+  fra.me.meth = LOCATE_parser___ReduceAction553___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19634 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19635 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19636 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19637 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19638 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19640 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19640);
+  }
+  /* parser/parser.nit:19642 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19642);
+  }
+  /* parser/parser.nit:19644 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19644);
+  }
+  /* parser/parser.nit:19645 */
+  fra.me.REG[3] = NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:19651 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19652 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19652);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction554___action[] = "parser::ReduceAction554::(parser::ReduceAction::action)";
+void parser___ReduceAction554___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 = 19657;
+  fra.me.meth = LOCATE_parser___ReduceAction554___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19659 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19660 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19661 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19662 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19663 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19664 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19666 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19666);
+  }
+  /* parser/parser.nit:19668 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19668);
+  }
+  /* parser/parser.nit:19670 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19670);
+  }
+  /* parser/parser.nit:19671 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19676 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19677 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19677);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction555___action[] = "parser::ReduceAction555::(parser::ReduceAction::action)";
+void parser___ReduceAction555___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 = 19682;
+  fra.me.meth = LOCATE_parser___ReduceAction555___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19684 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19685 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19686 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19688 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19688);
+  }
+  /* parser/parser.nit:19689 */
+  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:19691 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19691);
+  }
+  /* parser/parser.nit:19692 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:19697 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19698 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19698);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction556___action[] = "parser::ReduceAction556::(parser::ReduceAction::action)";
+void parser___ReduceAction556___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 = 19703;
+  fra.me.meth = LOCATE_parser___ReduceAction556___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19705 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19706 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19707 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19708 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19709 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19711 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19711);
+  }
+  /* parser/parser.nit:19713 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19713);
+  }
+  /* parser/parser.nit:19714 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19718 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19719 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19719);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction557___action[] = "parser::ReduceAction557::(parser::ReduceAction::action)";
+void parser___ReduceAction557___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 = 19724;
+  fra.me.meth = LOCATE_parser___ReduceAction557___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19726 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19727 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19728 */
+  fra.me.REG[4] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:19730 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19730);
+  }
+  /* parser/parser.nit:19731 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19735 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19736 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19736);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction564___action[] = "parser::ReduceAction564::(parser::ReduceAction::action)";
+void parser___ReduceAction564___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 = 19741;
+  fra.me.meth = LOCATE_parser___ReduceAction564___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19743 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19744 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19745 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19746 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:19748 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19748);
+  }
+  /* parser/parser.nit:19750 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19750);
+  }
+  /* parser/parser.nit:19751 */
+  fra.me.REG[5] = NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:19756 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:19757 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19757);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction565___action[] = "parser::ReduceAction565::(parser::ReduceAction::action)";
+void parser___ReduceAction565___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 = 19762;
+  fra.me.meth = LOCATE_parser___ReduceAction565___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19764 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19765 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19766 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19767 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19768 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19769 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19770 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19771 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19773 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19773);
+  }
+  /* parser/parser.nit:19775 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19775);
+  }
+  /* parser/parser.nit:19777 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19777);
+  }
+  /* parser/parser.nit:19779 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19779);
+  }
+  /* parser/parser.nit:19780 */
+  fra.me.REG[3] = NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19786 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19787 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19787);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction566___action[] = "parser::ReduceAction566::(parser::ReduceAction::action)";
+void parser___ReduceAction566___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 = 19792;
+  fra.me.meth = LOCATE_parser___ReduceAction566___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19794 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19795 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19796 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19797 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19798 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19799 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19800 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19801 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19802 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19803 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19805 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19805);
+  }
+  /* parser/parser.nit:19807 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19807);
+  }
+  /* parser/parser.nit:19809 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19809);
+  }
+  /* parser/parser.nit:19811 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19811);
+  }
+  /* parser/parser.nit:19812 */
+  fra.me.REG[3] = NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:19819 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19820 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19820);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction567___action[] = "parser::ReduceAction567::(parser::ReduceAction::action)";
+void parser___ReduceAction567___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 = 19825;
+  fra.me.meth = LOCATE_parser___ReduceAction567___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19827 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19828 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19829 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19830 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19831 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19832 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19833 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19834 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19835 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19836 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19837 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19839 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19839);
+  }
+  /* parser/parser.nit:19841 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19841);
+  }
+  /* parser/parser.nit:19843 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19843);
+  }
+  /* parser/parser.nit:19845 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19845);
+  }
+  /* parser/parser.nit:19847 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19847);
+  }
+  /* parser/parser.nit:19848 */
+  fra.me.REG[3] = NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19855 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19856 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19856);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction568___action[] = "parser::ReduceAction568::(parser::ReduceAction::action)";
+void parser___ReduceAction568___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 = 19861;
+  fra.me.meth = LOCATE_parser___ReduceAction568___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19863 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19864 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19865 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19866 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19867 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19868 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19869 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19870 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19871 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19872 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19874 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19874);
+  }
+  /* parser/parser.nit:19876 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19876);
+  }
+  /* parser/parser.nit:19878 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19878);
+  }
+  /* parser/parser.nit:19880 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19880);
+  }
+  /* parser/parser.nit:19881 */
+  fra.me.REG[3] = NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:19888 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19889 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19889);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction569___action[] = "parser::ReduceAction569::(parser::ReduceAction::action)";
+void parser___ReduceAction569___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 = 19894;
+  fra.me.meth = LOCATE_parser___ReduceAction569___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19896 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19897 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19898 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19899 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19900 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19901 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19902 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19903 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19904 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19905 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19906 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19908 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19908);
+  }
+  /* parser/parser.nit:19910 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19910);
+  }
+  /* parser/parser.nit:19912 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19912);
+  }
+  /* parser/parser.nit:19914 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19914);
+  }
+  /* parser/parser.nit:19916 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19916);
+  }
+  /* parser/parser.nit:19917 */
+  fra.me.REG[3] = NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19924 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19925 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19925);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction570___action[] = "parser::ReduceAction570::(parser::ReduceAction::action)";
+void parser___ReduceAction570___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 = 19930;
+  fra.me.meth = LOCATE_parser___ReduceAction570___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19932 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19933 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19935 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19935);
+  }
+  /* parser/parser.nit:19936 */
+  fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:19940 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19941 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19941);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction571___action[] = "parser::ReduceAction571::(parser::ReduceAction::action)";
+void parser___ReduceAction571___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 = 19946;
+  fra.me.meth = LOCATE_parser___ReduceAction571___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19948 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19949 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19950 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19952 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19952);
+  }
+  /* parser/parser.nit:19954 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19954);
+  }
+  /* parser/parser.nit:19955 */
+  fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19959 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19960 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19960);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction572___action[] = "parser::ReduceAction572::(parser::ReduceAction::action)";
+void parser___ReduceAction572___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 = 19965;
+  fra.me.meth = LOCATE_parser___ReduceAction572___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19967 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19968 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19970 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast nullable TKwself*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19970);
+  }
+  /* parser/parser.nit:19971 */
+  fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:19975 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19976 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19976);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction573___action[] = "parser::ReduceAction573::(parser::ReduceAction::action)";
+void parser___ReduceAction573___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 = 19981;
+  fra.me.meth = LOCATE_parser___ReduceAction573___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:19983 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:19984 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19985 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19987 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast nullable TKwself*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19987);
+  }
+  /* parser/parser.nit:19989 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19989);
+  }
+  /* parser/parser.nit:19990 */
+  fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:19994 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:19995 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19995);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction574___action[] = "parser::ReduceAction574::(parser::ReduceAction::action)";
+void parser___ReduceAction574___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 = 20000;
+  fra.me.meth = LOCATE_parser___ReduceAction574___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20002 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20003 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20005 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwtrue, ID_parser___parser_nodes___TKwtrue)) /*cast nullable TKwtrue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20005);
+  }
+  /* parser/parser.nit:20006 */
+  fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20010 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20011 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20011);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction575___action[] = "parser::ReduceAction575::(parser::ReduceAction::action)";
+void parser___ReduceAction575___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 = 20016;
+  fra.me.meth = LOCATE_parser___ReduceAction575___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20018 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20019 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20020 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20022 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwtrue, ID_parser___parser_nodes___TKwtrue)) /*cast nullable TKwtrue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20022);
+  }
+  /* parser/parser.nit:20024 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20024);
+  }
+  /* parser/parser.nit:20025 */
+  fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20029 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20030 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20030);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction576___action[] = "parser::ReduceAction576::(parser::ReduceAction::action)";
+void parser___ReduceAction576___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 = 20035;
+  fra.me.meth = LOCATE_parser___ReduceAction576___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20037 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20038 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20040 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwfalse, ID_parser___parser_nodes___TKwfalse)) /*cast nullable TKwfalse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20040);
+  }
+  /* parser/parser.nit:20041 */
+  fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20045 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20046 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20046);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction577___action[] = "parser::ReduceAction577::(parser::ReduceAction::action)";
+void parser___ReduceAction577___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 = 20051;
+  fra.me.meth = LOCATE_parser___ReduceAction577___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20053 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20054 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20055 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20057 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwfalse, ID_parser___parser_nodes___TKwfalse)) /*cast nullable TKwfalse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20057);
+  }
+  /* parser/parser.nit:20059 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20059);
+  }
+  /* parser/parser.nit:20060 */
+  fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20064 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20065 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20065);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction578___action[] = "parser::ReduceAction578::(parser::ReduceAction::action)";
+void parser___ReduceAction578___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 = 20070;
+  fra.me.meth = LOCATE_parser___ReduceAction578___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20072 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20073 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20075 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20075);
+  }
+  /* parser/parser.nit:20076 */
+  fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20080 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20081 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20081);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction579___action[] = "parser::ReduceAction579::(parser::ReduceAction::action)";
+void parser___ReduceAction579___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 = 20086;
+  fra.me.meth = LOCATE_parser___ReduceAction579___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20088 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20089 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20090 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20092 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20092);
+  }
+  /* parser/parser.nit:20094 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20094);
+  }
+  /* parser/parser.nit:20095 */
+  fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20099 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20100 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20100);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction580___action[] = "parser::ReduceAction580::(parser::ReduceAction::action)";
+void parser___ReduceAction580___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 = 20105;
+  fra.me.meth = LOCATE_parser___ReduceAction580___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20107 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20108 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20110 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TNumber, ID_parser___parser_nodes___TNumber)) /*cast nullable TNumber*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20110);
+  }
+  /* parser/parser.nit:20111 */
+  fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20115 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20116 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20116);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction581___action[] = "parser::ReduceAction581::(parser::ReduceAction::action)";
+void parser___ReduceAction581___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 = 20121;
+  fra.me.meth = LOCATE_parser___ReduceAction581___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20123 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20124 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20125 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20127 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TNumber, ID_parser___parser_nodes___TNumber)) /*cast nullable TNumber*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20127);
+  }
+  /* parser/parser.nit:20129 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20129);
+  }
+  /* parser/parser.nit:20130 */
+  fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20134 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20135 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20135);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction582___action[] = "parser::ReduceAction582::(parser::ReduceAction::action)";
+void parser___ReduceAction582___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 = 20140;
+  fra.me.meth = LOCATE_parser___ReduceAction582___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20142 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20143 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20145 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TFloat, ID_parser___parser_nodes___TFloat)) /*cast nullable TFloat*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20145);
+  }
+  /* parser/parser.nit:20146 */
+  fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20150 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20151 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20151);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction583___action[] = "parser::ReduceAction583::(parser::ReduceAction::action)";
+void parser___ReduceAction583___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 = 20156;
+  fra.me.meth = LOCATE_parser___ReduceAction583___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20158 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20159 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20160 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20162 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TFloat, ID_parser___parser_nodes___TFloat)) /*cast nullable TFloat*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20162);
+  }
+  /* parser/parser.nit:20164 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20164);
+  }
+  /* parser/parser.nit:20165 */
+  fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20169 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20170 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20170);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction584___action[] = "parser::ReduceAction584::(parser::ReduceAction::action)";
+void parser___ReduceAction584___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 = 20175;
+  fra.me.meth = LOCATE_parser___ReduceAction584___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20177 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20178 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20180 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TChar, ID_parser___parser_nodes___TChar)) /*cast nullable TChar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20180);
+  }
+  /* parser/parser.nit:20181 */
+  fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20185 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20186 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20186);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction585___action[] = "parser::ReduceAction585::(parser::ReduceAction::action)";
+void parser___ReduceAction585___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 = 20191;
+  fra.me.meth = LOCATE_parser___ReduceAction585___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20193 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20194 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20195 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20197 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TChar, ID_parser___parser_nodes___TChar)) /*cast nullable TChar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20197);
+  }
+  /* parser/parser.nit:20199 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20199);
+  }
+  /* parser/parser.nit:20200 */
+  fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20204 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20205 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20205);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction586___action[] = "parser::ReduceAction586::(parser::ReduceAction::action)";
+void parser___ReduceAction586___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 = 20210;
+  fra.me.meth = LOCATE_parser___ReduceAction586___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20212 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20213 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20215 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20215);
+  }
+  /* parser/parser.nit:20216 */
+  fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20220 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20221 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20221);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction587___action[] = "parser::ReduceAction587::(parser::ReduceAction::action)";
+void parser___ReduceAction587___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 = 20226;
+  fra.me.meth = LOCATE_parser___ReduceAction587___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20228 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20229 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20230 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20232 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20232);
+  }
+  /* parser/parser.nit:20234 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20234);
+  }
+  /* parser/parser.nit:20235 */
+  fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20239 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20240 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20240);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction589___action[] = "parser::ReduceAction589::(parser::ReduceAction::action)";
+void parser___ReduceAction589___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 = 20245;
+  fra.me.meth = LOCATE_parser___ReduceAction589___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20247 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20248 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20249 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20250 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20252 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20252);
+  }
+  /* parser/parser.nit:20254 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20254);
+  }
+  /* parser/parser.nit:20256 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20256);
+  }
+  /* parser/parser.nit:20257 */
+  fra.me.REG[3] = NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20263 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20264 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20264);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction590___action[] = "parser::ReduceAction590::(parser::ReduceAction::action)";
+void parser___ReduceAction590___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 = 20269;
+  fra.me.meth = LOCATE_parser___ReduceAction590___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20271 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20272 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20273 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20274 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20275 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20277 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20277);
+  }
+  /* parser/parser.nit:20279 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20279);
+  }
+  /* parser/parser.nit:20281 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20281);
+  }
+  /* parser/parser.nit:20283 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20283);
+  }
+  /* parser/parser.nit:20284 */
+  fra.me.REG[3] = NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20290 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20291 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20291);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction591___action[] = "parser::ReduceAction591::(parser::ReduceAction::action)";
+void parser___ReduceAction591___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 = 20296;
+  fra.me.meth = LOCATE_parser___ReduceAction591___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20298 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20299 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20300 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20301 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20302 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20303 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20304 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20305 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20306 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20307 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20308 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20310 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20310);
+  }
+  /* parser/parser.nit:20312 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20312);
+  }
+  /* parser/parser.nit:20314 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20314);
+  }
+  /* parser/parser.nit:20316 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20316);
+  }
+  /* parser/parser.nit:20318 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20318);
+  }
+  /* parser/parser.nit:20319 */
+  fra.me.REG[3] = NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20326 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20327 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20327);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction592___action[] = "parser::ReduceAction592::(parser::ReduceAction::action)";
+void parser___ReduceAction592___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 = 20332;
+  fra.me.meth = LOCATE_parser___ReduceAction592___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20334 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20335 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20336 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20337 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20338 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20339 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20340 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20341 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20342 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20343 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20344 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20345 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20346 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20348 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20348);
+  }
+  /* parser/parser.nit:20350 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20350);
+  }
+  /* parser/parser.nit:20352 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20352);
+  }
+  /* parser/parser.nit:20354 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20354);
+  }
+  /* parser/parser.nit:20356 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20356);
+  }
+  /* parser/parser.nit:20358 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20358);
+  }
+  /* parser/parser.nit:20359 */
+  fra.me.REG[3] = NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20367 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20368 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20368);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction593___action[] = "parser::ReduceAction593::(parser::ReduceAction::action)";
+void parser___ReduceAction593___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 = 20373;
+  fra.me.meth = LOCATE_parser___ReduceAction593___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20375 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20376 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20377 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20378 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20380 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20380);
+  }
+  /* parser/parser.nit:20382 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20382);
+  }
+  /* parser/parser.nit:20383 */
+  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:20384 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20385 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:20387 */
+  fra.me.REG[5] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:20391 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:20392 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20392);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction594___action[] = "parser::ReduceAction594::(parser::ReduceAction::action)";
+void parser___ReduceAction594___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 = 20397;
+  fra.me.meth = LOCATE_parser___ReduceAction594___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20399 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20400 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20401 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20402 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20403 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20405 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20405);
+  }
+  /* parser/parser.nit:20407 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20407);
+  }
+  /* parser/parser.nit:20409 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20409);
+  }
+  /* parser/parser.nit:20410 */
+  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:20411 */
+  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:20412 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20413 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:20415 */
+  fra.me.REG[6] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6], NIT_NULL);
+  /* parser/parser.nit:20419 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:20420 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20420);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction595___action[] = "parser::ReduceAction595::(parser::ReduceAction::action)";
+void parser___ReduceAction595___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 = 20425;
+  fra.me.meth = LOCATE_parser___ReduceAction595___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20427 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20428 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20429 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20430 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20431 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20433 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20433);
+  }
+  /* parser/parser.nit:20435 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20435);
+  }
+  /* parser/parser.nit:20436 */
+  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:20437 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20438 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:20441 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20441);
+  }
+  /* parser/parser.nit:20442 */
+  fra.me.REG[3] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:20446 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20447 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20447);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction596___action[] = "parser::ReduceAction596::(parser::ReduceAction::action)";
+void parser___ReduceAction596___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 = 20452;
+  fra.me.meth = LOCATE_parser___ReduceAction596___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20454 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20455 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20456 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20457 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20458 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20459 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20461 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20461);
+  }
+  /* parser/parser.nit:20463 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20463);
+  }
+  /* parser/parser.nit:20465 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20465);
+  }
+  /* parser/parser.nit:20466 */
+  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:20467 */
+  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:20468 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20469 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:20472 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20472);
+  }
+  /* parser/parser.nit:20473 */
+  fra.me.REG[3] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[7], fra.me.REG[3]);
+  /* parser/parser.nit:20477 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20478 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20478);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction597___action[] = "parser::ReduceAction597::(parser::ReduceAction::action)";
+void parser___ReduceAction597___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 = 20483;
+  fra.me.meth = LOCATE_parser___ReduceAction597___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20485 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20486 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20487 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20488 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20489 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20490 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20493 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20494 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:20496 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20497 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:20499 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:20500 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20500);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction598___action[] = "parser::ReduceAction598::(parser::ReduceAction::action)";
+void parser___ReduceAction598___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 = 20505;
+  fra.me.meth = LOCATE_parser___ReduceAction598___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20507 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20508 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20510 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStartString, ID_parser___parser_nodes___TStartString)) /*cast nullable TStartString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20510);
+  }
+  /* parser/parser.nit:20511 */
+  fra.me.REG[3] = NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:20514 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20515 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20515);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction600___action[] = "parser::ReduceAction600::(parser::ReduceAction::action)";
+void parser___ReduceAction600___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 = 20520;
+  fra.me.meth = LOCATE_parser___ReduceAction600___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20522 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20525 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMidString, ID_parser___parser_nodes___TMidString)) /*cast nullable TMidString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20525);
+  }
+  /* parser/parser.nit:20526 */
+  fra.me.REG[3] = NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:20529 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20530 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20530);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction601___action[] = "parser::ReduceAction601::(parser::ReduceAction::action)";
+void parser___ReduceAction601___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 = 20535;
+  fra.me.meth = LOCATE_parser___ReduceAction601___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20537 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20538 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20540 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TEndString, ID_parser___parser_nodes___TEndString)) /*cast nullable TEndString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20540);
+  }
+  /* parser/parser.nit:20541 */
+  fra.me.REG[3] = NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:20544 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20545 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20545);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction602___action[] = "parser::ReduceAction602::(parser::ReduceAction::action)";
+void parser___ReduceAction602___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 = 20550;
+  fra.me.meth = LOCATE_parser___ReduceAction602___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20552 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20553 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20554 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20555 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20557 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAt, ID_parser___parser_nodes___TAt)) /*cast nullable TAt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20557);
+  }
+  /* parser/parser.nit:20559 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotation, ID_parser___parser_nodes___AAnnotation)) /*cast nullable AAnnotation*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20559);
+  }
+  /* parser/parser.nit:20560 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20561 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:20563 */
+  fra.me.REG[5] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:20569 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:20570 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20570);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction603___action[] = "parser::ReduceAction603::(parser::ReduceAction::action)";
+void parser___ReduceAction603___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 = 20575;
+  fra.me.meth = LOCATE_parser___ReduceAction603___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20577 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20578 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20579 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20580 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20581 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20582 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20584 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TAt, ID_parser___parser_nodes___TAt)) /*cast nullable TAt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20584);
+  }
+  /* parser/parser.nit:20586 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20586);
+  }
+  /* parser/parser.nit:20588 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20588);
+  }
+  /* parser/parser.nit:20589 */
+  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:20591 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20591);
+  }
+  /* parser/parser.nit:20592 */
+  fra.me.REG[3] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3]);
+  /* parser/parser.nit:20598 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20599 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20599);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction604___action[] = "parser::ReduceAction604::(parser::ReduceAction::action)";
+void parser___ReduceAction604___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 = 20604;
+  fra.me.meth = LOCATE_parser___ReduceAction604___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20606 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20607 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20608 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20610 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20610);
+  }
+  /* parser/parser.nit:20611 */
+  fra.me.REG[4] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[3], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:20618 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:20619 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20619);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction605___action[] = "parser::ReduceAction605::(parser::ReduceAction::action)";
+void parser___ReduceAction605___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 = 20624;
+  fra.me.meth = LOCATE_parser___ReduceAction605___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20626 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20627 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20628 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20629 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20631 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20631);
+  }
+  /* parser/parser.nit:20633 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20633);
+  }
+  /* parser/parser.nit:20634 */
+  fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:20641 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20642 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20642);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction606___action[] = "parser::ReduceAction606::(parser::ReduceAction::action)";
+void parser___ReduceAction606___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 = 20647;
+  fra.me.meth = LOCATE_parser___ReduceAction606___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20649 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20650 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20651 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20652 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20653 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20654 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20656 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20656);
+  }
+  /* parser/parser.nit:20658 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20658);
+  }
+  /* parser/parser.nit:20660 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20660);
+  }
+  /* parser/parser.nit:20661 */
+  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:20663 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20663);
+  }
+  /* parser/parser.nit:20664 */
+  fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20671 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20672 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20672);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction607___action[] = "parser::ReduceAction607::(parser::ReduceAction::action)";
+void parser___ReduceAction607___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 = 20677;
+  fra.me.meth = LOCATE_parser___ReduceAction607___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20679 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20680 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20681 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20682 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20683 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20684 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20685 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20687 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20687);
+  }
+  /* parser/parser.nit:20689 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20689);
+  }
+  /* parser/parser.nit:20691 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20691);
+  }
+  /* parser/parser.nit:20692 */
+  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:20694 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20694);
+  }
+  /* parser/parser.nit:20696 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20696);
+  }
+  /* parser/parser.nit:20697 */
+  fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20704 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20705 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20705);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction608___action[] = "parser::ReduceAction608::(parser::ReduceAction::action)";
+void parser___ReduceAction608___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 = 20710;
+  fra.me.meth = LOCATE_parser___ReduceAction608___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20712 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20713 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20714 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20716 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20716);
+  }
+  /* parser/parser.nit:20717 */
+  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:20718 */
+  fra.me.REG[4] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:20724 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:20725 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20725);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction609___action[] = "parser::ReduceAction609::(parser::ReduceAction::action)";
+void parser___ReduceAction609___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 = 20730;
+  fra.me.meth = LOCATE_parser___ReduceAction609___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20732 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20733 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20734 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20736 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20737 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:20739 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:20740 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20740);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction610___action[] = "parser::ReduceAction610::(parser::ReduceAction::action)";
+void parser___ReduceAction610___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 = 20745;
+  fra.me.meth = LOCATE_parser___ReduceAction610___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20747 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20748 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20749 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20750 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20753 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20753);
+  }
+  /* parser/parser.nit:20754 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20755 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:20757 */
+  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:20758 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:20759 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20759);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction612___action[] = "parser::ReduceAction612::(parser::ReduceAction::action)";
+void parser___ReduceAction612___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 = 20764;
+  fra.me.meth = LOCATE_parser___ReduceAction612___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20766 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20767 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20768 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20769 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20770 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20772 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20772);
+  }
+  /* parser/parser.nit:20773 */
+  fra.me.REG[4] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[3], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:20780 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:20781 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20781);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction613___action[] = "parser::ReduceAction613::(parser::ReduceAction::action)";
+void parser___ReduceAction613___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 = 20786;
+  fra.me.meth = LOCATE_parser___ReduceAction613___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20788 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20789 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20790 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20791 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20792 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20793 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20795 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20795);
+  }
+  /* parser/parser.nit:20797 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20797);
+  }
+  /* parser/parser.nit:20798 */
+  fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:20805 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20806 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20806);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction614___action[] = "parser::ReduceAction614::(parser::ReduceAction::action)";
+void parser___ReduceAction614___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 = 20811;
+  fra.me.meth = LOCATE_parser___ReduceAction614___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20813 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20814 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20815 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20816 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20817 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20818 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20819 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20820 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20822 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20822);
+  }
+  /* parser/parser.nit:20824 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20824);
+  }
+  /* parser/parser.nit:20826 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20826);
+  }
+  /* parser/parser.nit:20827 */
+  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:20829 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20829);
+  }
+  /* parser/parser.nit:20830 */
+  fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:20837 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20838 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20838);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction615___action[] = "parser::ReduceAction615::(parser::ReduceAction::action)";
+void parser___ReduceAction615___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 = 20843;
+  fra.me.meth = LOCATE_parser___ReduceAction615___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20845 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20846 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20847 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20848 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20849 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20850 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20851 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20852 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20853 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20855 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20855);
+  }
+  /* parser/parser.nit:20857 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20857);
+  }
+  /* parser/parser.nit:20859 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20859);
+  }
+  /* parser/parser.nit:20860 */
+  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:20862 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20862);
+  }
+  /* parser/parser.nit:20864 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20864);
+  }
+  /* parser/parser.nit:20865 */
+  fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:20872 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20873 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20873);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction616___action[] = "parser::ReduceAction616::(parser::ReduceAction::action)";
+void parser___ReduceAction616___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 = 20878;
+  fra.me.meth = LOCATE_parser___ReduceAction616___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20880 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20881 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20882 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20883 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20884 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20885 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20887 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20887);
+  }
+  /* parser/parser.nit:20889 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20889);
+  }
+  /* parser/parser.nit:20890 */
+  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:20891 */
+  fra.me.REG[5] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:20898 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:20899 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20899);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction617___action[] = "parser::ReduceAction617::(parser::ReduceAction::action)";
+void parser___ReduceAction617___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 = 20904;
+  fra.me.meth = LOCATE_parser___ReduceAction617___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20906 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20907 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20908 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20909 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20911 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20912 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20912);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction618___action[] = "parser::ReduceAction618::(parser::ReduceAction::action)";
+void parser___ReduceAction618___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 = 20917;
+  fra.me.meth = LOCATE_parser___ReduceAction618___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20919 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20920 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20921 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20923 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20924 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:20926 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:20927 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20927);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction619___action[] = "parser::ReduceAction619::(parser::ReduceAction::action)";
+void parser___ReduceAction619___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 = 20932;
+  fra.me.meth = LOCATE_parser___ReduceAction619___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20934 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20935 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20936 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20937 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:20940 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20940);
+  }
+  /* parser/parser.nit:20941 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:20942 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:20944 */
+  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:20945 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:20946 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20946);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction620___action[] = "parser::ReduceAction620::(parser::ReduceAction::action)";
+void parser___ReduceAction620___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 = 20951;
+  fra.me.meth = LOCATE_parser___ReduceAction620___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20953 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20954 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20955 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20956 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20958 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20959 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20959);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction621___action[] = "parser::ReduceAction621::(parser::ReduceAction::action)";
+void parser___ReduceAction621___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 = 20964;
+  fra.me.meth = LOCATE_parser___ReduceAction621___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20966 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20967 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20969 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20969);
+  }
+  /* parser/parser.nit:20970 */
+  fra.me.REG[3] = NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(fra.me.REG[3]);
+  /* parser/parser.nit:20973 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20974 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20974);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction622___action[] = "parser::ReduceAction622::(parser::ReduceAction::action)";
+void parser___ReduceAction622___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 = 20979;
+  fra.me.meth = LOCATE_parser___ReduceAction622___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20981 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20982 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20984 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20984);
+  }
+  /* parser/parser.nit:20985 */
+  fra.me.REG[3] = NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(fra.me.REG[3]);
+  /* parser/parser.nit:20988 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:20989 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20989);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction624___action[] = "parser::ReduceAction624::(parser::ReduceAction::action)";
+void parser___ReduceAction624___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 = 20994;
+  fra.me.meth = LOCATE_parser___ReduceAction624___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:20996 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:20997 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:20999 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20999);
+  }
+  /* parser/parser.nit:21000 */
+  fra.me.REG[3] = NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(fra.me.REG[3]);
+  /* parser/parser.nit:21003 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21004 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21004);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction625___action[] = "parser::ReduceAction625::(parser::ReduceAction::action)";
+void parser___ReduceAction625___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 = 21009;
+  fra.me.meth = LOCATE_parser___ReduceAction625___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21011 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21012 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21014 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21014);
+  }
+  /* parser/parser.nit:21015 */
+  fra.me.REG[3] = NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(fra.me.REG[3]);
+  /* parser/parser.nit:21018 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21019 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21019);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction626___action[] = "parser::ReduceAction626::(parser::ReduceAction::action)";
+void parser___ReduceAction626___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 = 21024;
+  fra.me.meth = LOCATE_parser___ReduceAction626___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21026 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21027 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21029 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21029);
+  }
+  /* parser/parser.nit:21030 */
+  fra.me.REG[3] = NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(fra.me.REG[3]);
+  /* parser/parser.nit:21033 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21034 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21034);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction627___action[] = "parser::ReduceAction627::(parser::ReduceAction::action)";
+void parser___ReduceAction627___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 = 21039;
+  fra.me.meth = LOCATE_parser___ReduceAction627___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21041 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21042 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21044 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21044);
+  }
+  /* parser/parser.nit:21045 */
+  fra.me.REG[3] = NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(fra.me.REG[3]);
+  /* parser/parser.nit:21048 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21049 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21049);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction628___action[] = "parser::ReduceAction628::(parser::ReduceAction::action)";
+void parser___ReduceAction628___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 = 21054;
+  fra.me.meth = LOCATE_parser___ReduceAction628___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21056 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21057 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21059 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21059);
+  }
+  /* parser/parser.nit:21060 */
+  fra.me.REG[3] = NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid(fra.me.REG[3]);
+  /* parser/parser.nit:21063 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21064 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21064);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction629___action[] = "parser::ReduceAction629::(parser::ReduceAction::action)";
+void parser___ReduceAction629___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 = 21069;
+  fra.me.meth = LOCATE_parser___ReduceAction629___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21071 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21072 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21073 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21074 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21075 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21076 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21078 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21078);
+  }
+  /* parser/parser.nit:21080 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21080);
+  }
+  /* parser/parser.nit:21081 */
+  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:21083 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21083);
+  }
+  /* parser/parser.nit:21084 */
+  fra.me.REG[3] = NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:21089 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21090 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21090);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction630___action[] = "parser::ReduceAction630::(parser::ReduceAction::action)";
+void parser___ReduceAction630___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 = 21095;
+  fra.me.meth = LOCATE_parser___ReduceAction630___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21097 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21098 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21099 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21100 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21101 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21103 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21103);
+  }
+  /* parser/parser.nit:21105 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21105);
+  }
+  /* parser/parser.nit:21106 */
+  fra.me.REG[3] = NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:21111 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21112 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21112);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction631___action[] = "parser::ReduceAction631::(parser::ReduceAction::action)";
+void parser___ReduceAction631___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 = 21117;
+  fra.me.meth = LOCATE_parser___ReduceAction631___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21119 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21120 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21121 */
+  fra.me.REG[3] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[3]);
+  /* parser/parser.nit:21124 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21125 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21125);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction633___action[] = "parser::ReduceAction633::(parser::ReduceAction::action)";
+void parser___ReduceAction633___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 = 21130;
+  fra.me.meth = LOCATE_parser___ReduceAction633___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21132 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21133 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21134 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21136 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21136);
+  }
+  /* parser/parser.nit:21137 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21138 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21140 */
+  fra.me.REG[4] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[4]);
+  /* parser/parser.nit:21143 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21144 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21144);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction636___action[] = "parser::ReduceAction636::(parser::ReduceAction::action)";
+void parser___ReduceAction636___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 = 21149;
+  fra.me.meth = LOCATE_parser___ReduceAction636___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21151 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21152 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21153 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21154 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21155 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21156 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21158 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21158);
+  }
+  /* parser/parser.nit:21160 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21160);
+  }
+  /* parser/parser.nit:21161 */
+  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:21163 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21163);
+  }
+  /* parser/parser.nit:21164 */
+  fra.me.REG[3] = NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:21169 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21170 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21170);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction637___action[] = "parser::ReduceAction637::(parser::ReduceAction::action)";
+void parser___ReduceAction637___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 = 21175;
+  fra.me.meth = LOCATE_parser___ReduceAction637___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21177 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21178 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21179 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21180 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21182 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21183 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21185 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21186 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21186);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction638___action[] = "parser::ReduceAction638::(parser::ReduceAction::action)";
+void parser___ReduceAction638___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 = 21191;
+  fra.me.meth = LOCATE_parser___ReduceAction638___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21193 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21194 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21195 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21196 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21197 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21200 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21200);
+  }
+  /* parser/parser.nit:21201 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21202 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:21204 */
+  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:21205 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21206 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21206);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction639___action[] = "parser::ReduceAction639::(parser::ReduceAction::action)";
+void parser___ReduceAction639___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 = 21211;
+  fra.me.meth = LOCATE_parser___ReduceAction639___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21213 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21214 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21215 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21216 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21219 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21220 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21220);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction640___action[] = "parser::ReduceAction640::(parser::ReduceAction::action)";
+void parser___ReduceAction640___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 = 21225;
+  fra.me.meth = LOCATE_parser___ReduceAction640___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21227 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21228 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21229 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21231 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21232 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21234 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21235 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21235);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction641___action[] = "parser::ReduceAction641::(parser::ReduceAction::action)";
+void parser___ReduceAction641___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 = 21240;
+  fra.me.meth = LOCATE_parser___ReduceAction641___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21242 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21243 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21244 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21245 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21246 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21247 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21248 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21250 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21250);
+  }
+  /* parser/parser.nit:21252 */
+  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:21253 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21254 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21256 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21257 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21257);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction642___action[] = "parser::ReduceAction642::(parser::ReduceAction::action)";
+void parser___ReduceAction642___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 = 21262;
+  fra.me.meth = LOCATE_parser___ReduceAction642___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21264 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21265 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21266 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21268 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21268);
+  }
+  /* parser/parser.nit:21269 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:21274 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21275 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21275);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction643___action[] = "parser::ReduceAction643::(parser::ReduceAction::action)";
+void parser___ReduceAction643___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 = 21280;
+  fra.me.meth = LOCATE_parser___ReduceAction643___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21282 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21283 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21284 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21285 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21287 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21287);
+  }
+  /* parser/parser.nit:21288 */
+  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:21290 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21290);
+  }
+  /* parser/parser.nit:21291 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(NIT_NULL, fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:21296 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21297 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21297);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction644___action[] = "parser::ReduceAction644::(parser::ReduceAction::action)";
+void parser___ReduceAction644___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 = 21302;
+  fra.me.meth = LOCATE_parser___ReduceAction644___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21304 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21305 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21306 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21307 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21308 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21310 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21310);
+  }
+  /* parser/parser.nit:21312 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21312);
+  }
+  /* parser/parser.nit:21313 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:21318 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21319 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21319);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction645___action[] = "parser::ReduceAction645::(parser::ReduceAction::action)";
+void parser___ReduceAction645___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 = 21324;
+  fra.me.meth = LOCATE_parser___ReduceAction645___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21326 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21327 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21328 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21329 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21330 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21331 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21333 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21333);
+  }
+  /* parser/parser.nit:21335 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21335);
+  }
+  /* parser/parser.nit:21336 */
+  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:21338 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21338);
+  }
+  /* parser/parser.nit:21339 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:21344 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21345 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21345);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction646___action[] = "parser::ReduceAction646::(parser::ReduceAction::action)";
+void parser___ReduceAction646___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 = 21350;
+  fra.me.meth = LOCATE_parser___ReduceAction646___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21352 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21353 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21354 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21356 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21356);
+  }
+  /* parser/parser.nit:21357 */
+  fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:21361 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21362 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21362);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction647___action[] = "parser::ReduceAction647::(parser::ReduceAction::action)";
+void parser___ReduceAction647___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 = 21367;
+  fra.me.meth = LOCATE_parser___ReduceAction647___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21369 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21370 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21371 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21372 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21374 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21374);
+  }
+  /* parser/parser.nit:21375 */
+  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:21377 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21377);
+  }
+  /* parser/parser.nit:21378 */
+  fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:21382 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21383 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21383);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction648___action[] = "parser::ReduceAction648::(parser::ReduceAction::action)";
+void parser___ReduceAction648___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 = 21388;
+  fra.me.meth = LOCATE_parser___ReduceAction648___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21390 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21391 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21392 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21394 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21394);
+  }
+  /* parser/parser.nit:21395 */
+  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:21396 */
+  fra.me.REG[4] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:21400 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21401 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21401);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction649___action[] = "parser::ReduceAction649::(parser::ReduceAction::action)";
+void parser___ReduceAction649___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 = 21406;
+  fra.me.meth = LOCATE_parser___ReduceAction649___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21408 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21409 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21410 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21411 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21413 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21414 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21414);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction650___action[] = "parser::ReduceAction650::(parser::ReduceAction::action)";
+void parser___ReduceAction650___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 = 21419;
+  fra.me.meth = LOCATE_parser___ReduceAction650___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21421 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21422 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21423 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21424 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21426 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21427 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21427);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction651___action[] = "parser::ReduceAction651::(parser::ReduceAction::action)";
+void parser___ReduceAction651___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 = 21432;
+  fra.me.meth = LOCATE_parser___ReduceAction651___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21434 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21435 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21436 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21436);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction653___action[] = "parser::ReduceAction653::(parser::ReduceAction::action)";
+void parser___ReduceAction653___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 = 21441;
+  fra.me.meth = LOCATE_parser___ReduceAction653___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21443 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21444 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21445 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21447 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21447);
+  }
+  /* parser/parser.nit:21448 */
+  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:21449 */
+  fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
+  /* parser/parser.nit:21452 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21453 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21453);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction654___action[] = "parser::ReduceAction654::(parser::ReduceAction::action)";
+void parser___ReduceAction654___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 = 21458;
+  fra.me.meth = LOCATE_parser___ReduceAction654___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21460 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21461 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21462 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21463 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21465 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21465);
+  }
+  /* parser/parser.nit:21466 */
+  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:21467 */
+  fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
+  /* parser/parser.nit:21470 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21471 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21471);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction656___action[] = "parser::ReduceAction656::(parser::ReduceAction::action)";
+void parser___ReduceAction656___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 = 21476;
+  fra.me.meth = LOCATE_parser___ReduceAction656___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21478 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21479 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21480 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21480);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction657___action[] = "parser::ReduceAction657::(parser::ReduceAction::action)";
+void parser___ReduceAction657___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 = 21485;
+  fra.me.meth = LOCATE_parser___ReduceAction657___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21487 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21488 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21490 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21491 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21491);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction658___action[] = "parser::ReduceAction658::(parser::ReduceAction::action)";
+void parser___ReduceAction658___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 = 21496;
+  fra.me.meth = LOCATE_parser___ReduceAction658___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21498 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21499 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21500 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21501 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21501);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction659___action[] = "parser::ReduceAction659::(parser::ReduceAction::action)";
+void parser___ReduceAction659___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 = 21506;
+  fra.me.meth = LOCATE_parser___ReduceAction659___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21508 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21509 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21510 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21511 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21512 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21512);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction931___action[] = "parser::ReduceAction931::(parser::ReduceAction::action)";
+void parser___ReduceAction931___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 = 21517;
+  fra.me.meth = LOCATE_parser___ReduceAction931___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21519 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21520 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21521 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21522 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21524 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21524);
+  }
+  /* parser/parser.nit:21526 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21526);
+  }
+  /* parser/parser.nit:21528 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21528);
+  }
+  /* parser/parser.nit:21529 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:21534 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21535 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21535);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction932___action[] = "parser::ReduceAction932::(parser::ReduceAction::action)";
+void parser___ReduceAction932___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 = 21540;
+  fra.me.meth = LOCATE_parser___ReduceAction932___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21542 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21543 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21544 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21546 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21546);
+  }
+  /* parser/parser.nit:21548 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21548);
+  }
+  /* parser/parser.nit:21549 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:21553 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21554 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21554);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction933___action[] = "parser::ReduceAction933::(parser::ReduceAction::action)";
+void parser___ReduceAction933___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 = 21559;
+  fra.me.meth = LOCATE_parser___ReduceAction933___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21561 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21562 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21563 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21564 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21565 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21567 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21567);
+  }
+  /* parser/parser.nit:21569 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21569);
+  }
+  /* parser/parser.nit:21571 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21571);
+  }
+  /* parser/parser.nit:21572 */
+  fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser.nit:21578 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:21579 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21579);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction936___action[] = "parser::ReduceAction936::(parser::ReduceAction::action)";
+void parser___ReduceAction936___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 = 21584;
+  fra.me.meth = LOCATE_parser___ReduceAction936___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21586 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21587 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21588 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21589 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21591 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21591);
+  }
+  /* parser/parser.nit:21593 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21593);
+  }
+  /* parser/parser.nit:21595 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21595);
+  }
+  /* parser/parser.nit:21596 */
+  fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:21601 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21602 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21602);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction957___action[] = "parser::ReduceAction957::(parser::ReduceAction::action)";
+void parser___ReduceAction957___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 = 21607;
+  fra.me.meth = LOCATE_parser___ReduceAction957___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21609 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21610 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21611 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21612 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21614 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21615 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21615);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction958___action[] = "parser::ReduceAction958::(parser::ReduceAction::action)";
+void parser___ReduceAction958___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 = 21620;
+  fra.me.meth = LOCATE_parser___ReduceAction958___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21622 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21623 */
+  fra.me.REG[3] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:21624 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:21625 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21625);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1250___action[] = "parser::ReduceAction1250::(parser::ReduceAction::action)";
+void parser___ReduceAction1250___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 = 21630;
+  fra.me.meth = LOCATE_parser___ReduceAction1250___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21632 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21633 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21634 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21636 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21637 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21639 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21640 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21640);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1251___action[] = "parser::ReduceAction1251::(parser::ReduceAction::action)";
+void parser___ReduceAction1251___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 = 21645;
+  fra.me.meth = LOCATE_parser___ReduceAction1251___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21647 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21648 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21649 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21650 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21652 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21652);
+  }
+  /* parser/parser.nit:21654 */
+  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:21655 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21656 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21658 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21659 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21659);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1252___action[] = "parser::ReduceAction1252::(parser::ReduceAction::action)";
+void parser___ReduceAction1252___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 = 21664;
+  fra.me.meth = LOCATE_parser___ReduceAction1252___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21666 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21667 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21668 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21670 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21671 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21673 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21674 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21674);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1253___action[] = "parser::ReduceAction1253::(parser::ReduceAction::action)";
+void parser___ReduceAction1253___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 = 21679;
+  fra.me.meth = LOCATE_parser___ReduceAction1253___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21681 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21682 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21683 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21684 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21686 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21686);
+  }
+  /* parser/parser.nit:21688 */
+  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:21689 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21690 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21692 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21693 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21693);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1254___action[] = "parser::ReduceAction1254::(parser::ReduceAction::action)";
+void parser___ReduceAction1254___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 = 21698;
+  fra.me.meth = LOCATE_parser___ReduceAction1254___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21700 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21701 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21702 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21704 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21705 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21707 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21708 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21708);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1255___action[] = "parser::ReduceAction1255::(parser::ReduceAction::action)";
+void parser___ReduceAction1255___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 = 21713;
+  fra.me.meth = LOCATE_parser___ReduceAction1255___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21715 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21716 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21717 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21718 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21720 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21720);
+  }
+  /* parser/parser.nit:21722 */
+  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:21723 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21724 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21726 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21727 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21727);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1256___action[] = "parser::ReduceAction1256::(parser::ReduceAction::action)";
+void parser___ReduceAction1256___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 = 21732;
+  fra.me.meth = LOCATE_parser___ReduceAction1256___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21734 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21735 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21736 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21738 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21739 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21741 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21742 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21742);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1257___action[] = "parser::ReduceAction1257::(parser::ReduceAction::action)";
+void parser___ReduceAction1257___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 = 21747;
+  fra.me.meth = LOCATE_parser___ReduceAction1257___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21749 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21750 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21751 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21752 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21754 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21754);
+  }
+  /* parser/parser.nit:21756 */
+  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:21757 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21758 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21760 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21761 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21761);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1258___action[] = "parser::ReduceAction1258::(parser::ReduceAction::action)";
+void parser___ReduceAction1258___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 = 21766;
+  fra.me.meth = LOCATE_parser___ReduceAction1258___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21768 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21769 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21770 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21772 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21773 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21775 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21776 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21776);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1259___action[] = "parser::ReduceAction1259::(parser::ReduceAction::action)";
+void parser___ReduceAction1259___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 = 21781;
+  fra.me.meth = LOCATE_parser___ReduceAction1259___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21783 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21784 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21785 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21786 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21788 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21788);
+  }
+  /* parser/parser.nit:21790 */
+  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:21791 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21792 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21794 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21795 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21795);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1262___action[] = "parser::ReduceAction1262::(parser::ReduceAction::action)";
+void parser___ReduceAction1262___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 = 21800;
+  fra.me.meth = LOCATE_parser___ReduceAction1262___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21802 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21803 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21804 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21806 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21807 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21809 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21810 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21810);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1263___action[] = "parser::ReduceAction1263::(parser::ReduceAction::action)";
+void parser___ReduceAction1263___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 = 21815;
+  fra.me.meth = LOCATE_parser___ReduceAction1263___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21817 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21818 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21819 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21820 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21822 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21822);
+  }
+  /* parser/parser.nit:21824 */
+  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:21825 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21826 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21828 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21829 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21829);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1264___action[] = "parser::ReduceAction1264::(parser::ReduceAction::action)";
+void parser___ReduceAction1264___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 = 21834;
+  fra.me.meth = LOCATE_parser___ReduceAction1264___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21836 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21837 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21838 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21840 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21841 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21843 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21844 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21844);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1265___action[] = "parser::ReduceAction1265::(parser::ReduceAction::action)";
+void parser___ReduceAction1265___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 = 21849;
+  fra.me.meth = LOCATE_parser___ReduceAction1265___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21851 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21852 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21853 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21854 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21856 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21856);
+  }
+  /* parser/parser.nit:21858 */
+  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:21859 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21860 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21862 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21863 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21863);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1266___action[] = "parser::ReduceAction1266::(parser::ReduceAction::action)";
+void parser___ReduceAction1266___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 = 21868;
+  fra.me.meth = LOCATE_parser___ReduceAction1266___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21870 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21871 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21872 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21874 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21875 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21877 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21878 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21878);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1267___action[] = "parser::ReduceAction1267::(parser::ReduceAction::action)";
+void parser___ReduceAction1267___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 = 21883;
+  fra.me.meth = LOCATE_parser___ReduceAction1267___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21885 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21886 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21887 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21888 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21890 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21890);
+  }
+  /* parser/parser.nit:21892 */
+  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:21893 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21894 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21896 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21897 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21897);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1268___action[] = "parser::ReduceAction1268::(parser::ReduceAction::action)";
+void parser___ReduceAction1268___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 = 21902;
+  fra.me.meth = LOCATE_parser___ReduceAction1268___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21904 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21905 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21906 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21908 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21909 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21911 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21912 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21912);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1269___action[] = "parser::ReduceAction1269::(parser::ReduceAction::action)";
+void parser___ReduceAction1269___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 = 21917;
+  fra.me.meth = LOCATE_parser___ReduceAction1269___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21919 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21920 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21921 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21922 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21924 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21924);
+  }
+  /* parser/parser.nit:21926 */
+  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:21927 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21928 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21930 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21931 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21931);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1271___action[] = "parser::ReduceAction1271::(parser::ReduceAction::action)";
+void parser___ReduceAction1271___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 = 21936;
+  fra.me.meth = LOCATE_parser___ReduceAction1271___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21938 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21939 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21940 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21941 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21943 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21943);
+  }
+  /* parser/parser.nit:21945 */
+  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:21946 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21947 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21949 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21950 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21950);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1272___action[] = "parser::ReduceAction1272::(parser::ReduceAction::action)";
+void parser___ReduceAction1272___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 = 21955;
+  fra.me.meth = LOCATE_parser___ReduceAction1272___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21957 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21958 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21959 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21961 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21962 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21964 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:21965 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21965);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1273___action[] = "parser::ReduceAction1273::(parser::ReduceAction::action)";
+void parser___ReduceAction1273___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 = 21970;
+  fra.me.meth = LOCATE_parser___ReduceAction1273___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21972 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21973 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21974 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21975 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21977 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21977);
+  }
+  /* parser/parser.nit:21979 */
+  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:21980 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:21981 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:21983 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:21984 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21984);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1275___action[] = "parser::ReduceAction1275::(parser::ReduceAction::action)";
+void parser___ReduceAction1275___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 = 21989;
+  fra.me.meth = LOCATE_parser___ReduceAction1275___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:21991 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:21992 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21993 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21994 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:21996 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21996);
+  }
+  /* parser/parser.nit:21998 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21998);
+  }
+  /* parser/parser.nit:21999 */
+  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:22000 */
+  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:22001 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:22002 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22002);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1277___action[] = "parser::ReduceAction1277::(parser::ReduceAction::action)";
+void parser___ReduceAction1277___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 = 22007;
+  fra.me.meth = LOCATE_parser___ReduceAction1277___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22009 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22010 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22011 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22012 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22014 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22014);
+  }
+  /* parser/parser.nit:22016 */
+  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:22017 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22018 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22020 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:22021 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22021);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1281___action[] = "parser::ReduceAction1281::(parser::ReduceAction::action)";
+void parser___ReduceAction1281___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 = 22026;
+  fra.me.meth = LOCATE_parser___ReduceAction1281___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22028 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22029 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22030 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22031 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22033 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22033);
+  }
+  /* parser/parser.nit:22035 */
+  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:22036 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22037 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22039 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:22040 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22040);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1285___action[] = "parser::ReduceAction1285::(parser::ReduceAction::action)";
+void parser___ReduceAction1285___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 = 22045;
+  fra.me.meth = LOCATE_parser___ReduceAction1285___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22047 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22048 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22049 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22050 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22052 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22052);
+  }
+  /* parser/parser.nit:22054 */
+  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:22055 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22056 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22058 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:22059 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22059);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1286___action[] = "parser::ReduceAction1286::(parser::ReduceAction::action)";
+void parser___ReduceAction1286___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 = 22064;
+  fra.me.meth = LOCATE_parser___ReduceAction1286___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22066 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22067 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22068 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22070 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22071 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22073 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:22074 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22074);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1287___action[] = "parser::ReduceAction1287::(parser::ReduceAction::action)";
+void parser___ReduceAction1287___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 = 22079;
+  fra.me.meth = LOCATE_parser___ReduceAction1287___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22081 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22082 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22083 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22084 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22086 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22086);
+  }
+  /* parser/parser.nit:22088 */
+  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:22089 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22090 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22092 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:22093 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22093);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1288___action[] = "parser::ReduceAction1288::(parser::ReduceAction::action)";
+void parser___ReduceAction1288___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 = 22098;
+  fra.me.meth = LOCATE_parser___ReduceAction1288___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22100 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22101 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22102 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22104 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22105 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22107 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:22108 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22108);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1289___action[] = "parser::ReduceAction1289::(parser::ReduceAction::action)";
+void parser___ReduceAction1289___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 = 22113;
+  fra.me.meth = LOCATE_parser___ReduceAction1289___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:22115 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:22116 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22117 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:22118 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:22120 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22120);
+  }
+  /* parser/parser.nit:22122 */
+  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:22123 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:22124 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:22126 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:22127 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22127);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
   return;
 }